javascript - 如何理解这个逻辑和三元运算符的例子?

标签 javascript ternary-operator logical-operators

我理解三元运算符本质上是 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 truthystrictly 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/

相关文章:

javascript - 使用 CSS 将超链接按钮添加到 Jquery Loopedslider

javascript - jquery POST 后变量被清除

javascript - 如何在 React 中渲染 HOC

javascript - 如何从 firebase 在 Push Key 上添加数据?

swift - 我应该总是用 Swift 中的三元替换 if...then...else 吗?

c++ - 按位和/或使用三元运算符

java - 为什么下面的语句在 C 中合法而在 Java 中不合法?

java - JDK 7 中泛型和三元运算符的编译错误

javascript - 为什么是 {} < function(){}?

javascript - NOT 与 NULL 与本地存储