【问题标题】:Javascript If statement containing both AND ( && ) and OR ( || ) [duplicate]Javascript If 语句同时包含 AND ( && ) 和 OR ( || ) [重复]
【发布时间】:2021-09-03 18:23:59
【问题描述】:

我很困惑为什么这个语句的计算结果为真:

(false && true || true) === true;

如果 AND (&&) 是一个守卫并且布尔程序是假的,那么它应该已经脱离了 if 语句,但它没有并继续评估 OR (||)声明。

我必须这样做:

false && (true || true) === false;

得到想要的结果。有人知道为什么会这样吗?

【问题讨论】:

  • && 的优先级高于||,所以第一个等价于((false && true) || true)
  • (false && true || true) => (false || true) => true
  • 这能回答你的问题吗? Standard boolean order of operation
  • @user3146945 在a && b || c中,&&的右操作数是b,而不是b || c

标签: javascript if-statement boolean conditional-statements


【解决方案1】:

&& 的优先级高于||

(false && true || true) === true 变为:

(false || true) === true 变为:

(true) === true

【讨论】:

  • 我在想,一旦它遇到错误的 && -- 评估就会停止并打破条件。因此,为什么有时将其称为守卫。感谢您的耐心等待。
猜你喜欢
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多