Javascript按位运算符优化?

时间:2014-02-28 08:02:01

标签: javascript binary

Javascript(以及其他语言)无法评估:

  • 此处right方:imTrue || imFalse
  • 此处right方:imFalse && imTrue
    等...

但这些规则是否也适用于* 按位* 操作? (找不到任何mdn信息)

e.g。

  • 1 | 1(这里会评估右侧吗?)
  • 0& 1(这里会评估右侧吗?)

1 个答案:

答案 0 :(得分:2)

您显示的逻辑运算符中的右侧未计算,因为它们是short circuit operators

对于按位运算符没有这样的东西(是的,它们不仅仅是布尔运算符,它们是按位运算符,这会改变问题)。

一个简单的演示:

0 & (function(){ return console.log('evaluated'),1 })();

短路操作员的主要原因不是性能,而是能够避免此类评估中的错误:

if (a && a.pretty) ...

在进行按位操作时很难满足短路保护的需要。

另请注意,当您不需要右侧时,javascript的弱类型会使您难以评估。 Luaan给出了一个很好的例子:1|2