三元输出短路评估

时间:2018-07-11 14:54:47

标签: javascript

我正在使用短路评估来分配一些变量。我不得不在其中一些中使用三元运算符,但是它的行为不符合我的预期:

console.log(false || "bar"); // Outputs "bar"
console.log("foo" || "bar"); // Outputs "foo"
console.log("foo" || (true) ? "42" : "bar"); // Ouputs "42", why ?

第三个console.log应该不是输出“ foo”吗?

1 个答案:

答案 0 :(得分:4)

console.log("foo" || (true) ? "42" : "bar"); // Ouputs "42", why ?

因为它被评估为

console.log(("foo" || true) ? "42" : "bar");

首先将("foo" || true)评估为真实值。

您的括号可能在错误的位置

console.log("foo" || (true ? "42" : "bar"));