如何理解这个逻辑和三元运算符的例子
How to understand this example of a logical and ternary operator?
我知道三元运算符本质上是if-else
语句的快捷方式,我也知道&&
是逻辑and。然而,我不明白在下面的代码中这两者是如何结合在一起的。
我也试着摆弄输出,但无济于事。我该如何解释以下内容?
function greetUser(customerName, sex) {
var salutation = sex && sex === "Man" ? "Mr." : "Ms.";
console.log("Hello, " + salutation + " " + customerName);
}
通常,三元运算符的意思是:
condition ? (value returned if condition is true) : (value returned if condition is false)
在您的示例中,条件是sex && sex === 'Man'
,这意味着变量sex
中包含的值是truthy,并且严格等于字符串"Man"
。
以下是分类:
var salutation;
if(sex && sex === 'Man') {
salutation = 'Mr';
} else {
salutation = 'Ms';
}
此外,在这个特定的例子中,由于您使用的是严格相等(即===
)比较,因此sex
的真实性检查没有任何意义,因此没有必要。你的情况可能只是:
var salutation = sex === "Man" ? "Mr." : "Ms.";
解释:当使用&&
时,两个操作数都被强制为布尔值,因此它们的"真实性"可以是AND-ed。例如,假设sex = 'Man'
,那么你的条件基本上是:
if('Man' && 'Man' === 'Man')
被迫布尔值的是:
if(true && true)
这显然是多余的。阅读有关JavaScript类型强制的更多信息。
在使用非严格比较运算符(如==
、<
、>
。。。而不是CCD_ 13。
简单地说,使用==
首先将两个项目强制为相同的类型,然后再进行比较,这可能会导致错误。如果类型不同,使用===
会立即返回false
,因此更安全。
下面是另一个用于JavaScript比较的有用资源。
&&
是逻辑and
,定义为,
(true && true) == true
(true && false) == false
(false && true) == false
(false && false) == false
因此,只有当a和B都是真时,语句A && B
才是真的
在您的情况下,对于三元运算符,一些括号可能会有所帮助,这样您就可以看到这些运算符的求值顺序。
(sex && (sex === "Man")) ? "Mr." : "Ms."
所以,用英语。。。
如果sex
存在并且sex
是'Man'
,则"Mr."
是"Ms."
一般来说,三元运算符的工作方式如下:
(true OR false) ? (value if true) : (value if false)
是性没有定义,性是Man
,然后是Mr.
;否则为CCD_ 27。所以在性别不明确的情况下;它也将是CCD_ 28。
您可以更改行
var salutation = sex && sex === "Man" ? "Mr." : "Ms.";
至
var salutation = ((sex) && (sex === "Man" ? "Mr." : "Ms."));
现在sex === "Man" ? "Mr." : "Ms."
告诉您,如果sex变量的值是Man
,并且两个变量的类型相同(在这种情况下是String),那么它应该返回Mr
else Ms
。
- 三元运算符检查多个字符串
- 用javascript中的三元运算符连接字符串
- 使用AngularJs数据绑定的三元运算符显示图像
- 三元运算符是NaN
- AngularJS模板中的三元运算符
- Javascript 同构三元运算符无法正确解析
- 车把中有三元运算符吗.js
- 三元运算符未执行的虚假语句
- 根据三元运算符选择函数
- 用三元运算符整理javascript
- 堆叠三元运算符在 Angularjs 表达式中不起作用
- es6javascript推荐使用三元运算符应用模板文本的方法
- 具有逻辑运算符的复杂三元运算符
- 通过三元运算符的自赋值
- 三元运算符中的表达式作为函数
- JavaScript中看似多余的三元运算符
- js:三元运算符中的多重返回
- Javascript 三元运算符结果
- 使用三元运算符缩短代码
- 语句中的三元运算符