代码之家  ›  专栏  ›  技术社区  ›  Epoch

三值输出短路评估[闭合]

  •  1
  • Epoch  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  4
  •   phuzi    6 年前
    console.log("foo" || (true) ? "42" : "bar"); // Ouputs "42", why ?
    

    因为它被评估为

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

    具有 ("foo" || true) 首先被评价为真理的价值。

    你的括号放错地方了也许你是说

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