我理解三元运算符本质上是 if-else
语句的快捷方式,我也理解 &&
是逻辑与。但是,我不明白这两者在下面的代码中是如何结合的。
我也试过输出,但没有用。我如何解释以下内容?
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和 strictly equal 到字符串 "Man"
.
这是分割:
var salutation;
if(sex && sex === 'Man') {
salutation = 'Mr';
} else {
salutation = 'Ms';
}
此外,在这个特定示例中,由于您使用的是严格相等(即===
)比较,因此对sex
的真实性检查没有任何意义。 ,这是不必要的。你的条件可以是:
var salutation = sex === "Man" ? "Mr." : "Ms.";
解释:当使用 &&
时,两个操作数都首先被强制转换为 bool 值,因此可以对它们的“真实性”进行 AND 运算。例如,假设 sex = 'Man'
,那么您的条件基本上是:
if('Man' && 'Man' === 'Man')
强制转换为 bool 值的是:
if(true && true)
这显然是多余的。 Read more about JavaScript type coercion .
在使用非严格比较运算符(例如 ==
)时发生的其他情况下,此真实性检查是一种很好的安全检查, <
, >
... 而不是 ===
.
简单来说,使用==
在比较之前首先将两个项目强制为同一类型 lead to bugs .使用 ===
立即返回 false
如果类型不同,则更安全。
这是一个 another useful resource用于 JavaScript 比较。
关于javascript - 如何理解这个逻辑和三元运算符的例子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34758320/