我正在使用短路评估来分配一些变量。我不得不在其中一些中使用三元运算符,但是它的行为不符合我的预期:
console.log(false || "bar"); // Outputs "bar"
console.log("foo" || "bar"); // Outputs "foo"
console.log("foo" || (true) ? "42" : "bar"); // Ouputs "42", why ?
第三个console.log
应该不是输出“ foo”吗?
答案 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"));