【问题标题】:&& and || in same expression in Javascript&& 和 ||在 Javascript 中的相同表达式
【发布时间】:2014-08-16 23:12:35
【问题描述】:

在少数情况下,我见过以下形式的表达:

!form.$valid && 'invalid' || 'valid'

按照从左到右的优先顺序指定here,这似乎意味着

(!form.$valid && 'invalid') || 'valid'

我对它如何返回字符串感到困惑。我认为这些字符串是true,因为它们不是nullundefined,这意味着表达式总是返回true

【问题讨论】:

标签: javascript operators operator-precedence


【解决方案1】:

在您的示例中,您不是在比较布尔值与布尔值,而是:

(布尔VS字符串)VS字符串

只有当另一个操作数是 true 时,您才能看到涉及一个 String(右侧或左侧)的比较返回 String

这就是返回“无效”或“有效”的原因。

(对于另一个非布尔值,规则相同)。

【讨论】:

  • "您可以看到涉及一个字符串(右侧或左侧)的比较仅在另一个操作数为真时才返回字符串。" - && 是这种情况,但|| 不是。
  • 那么在什么情况下会返回“有效”?如果 !form.$valid 为真,则 (!form.$valid && 'invalid') 返回 'invalid',因此表达式变为 'invalid' || “有效”?
  • @Josh 返回“有效”的唯一情况是表单有效($form.$valid 为真),因为表达式!$form.$valid 将返回falsefalse || 'valid' 返回 'valid'
猜你喜欢
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多