通常,三元运算符是指:
condition ? (value returned if condition is true) : (value returned if condition is false)
在您的例子中,条件是sex && sex === 'Man'
,这意味着包含在变量sex
值为truthy和strictly equal到字符串"Man"
。
这里的故障:
var salutation;
if(sex && sex === 'Man') {
salutation = 'Mr';
} else {
salutation = 'Ms';
}
此外,在这个特殊的例子,因为你正在使用全等(即===
)相比,没有任何一点的真实性检查sex
,它是不必要的。您的情况可能只是:
var salutation = sex === "Man" ? "Mr." : "Ms.";
说明:当使用&&
,两个操作数被强制为布尔第一所以他们的“真”,可以以AND。例如,假设sex = 'Man'
,那么你的情况将基本上是:
if('Man' && 'Man' === 'Man')
哪些强制转换为布尔值是:
if(true && true)
这显然是多余的。 Read more about JavaScript type coercion。
这truthy检查是在使用非严格的比较操作符,如==
,<
,>
...相反===
时发生其他情况良好的安全检查。
简而言之,使用==
先将两个项目强制转换为相同类型,然后再比较哪一个可以得到lead to bugs。如果类型不同,使用===
立即返回false
,因此它更安全。
这里是一个用于JavaScript比较的another useful resource。
但为什么是所有需要的第一个“性”?为什么不只有三元操作符?我没有看到第一个“性”提供了什么目的。 – AlanH
@AlanH查看我的编辑 – nem035