Javascript的按位运算符优化?

标签 javascript binary

Javascript(以及其他语言)不会计算:

  • 这里的右侧:imTrue || imFalse
  • 这里的右侧:imFalse && imTrue
    等等...

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

例如

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

最佳答案

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

按位运算符不存在这样的东西(是的,它们不仅仅是 bool 运算符,它们是按位运算符,这完全改变了问题)。

一个简单的演示:

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

短路运算符的主要原因不是性能,而是避免此类评估中错误的能力:

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

进行按位运算时很难需要短路保护。

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

关于Javascript的按位运算符优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22089483/

相关文章:

c++ - 从二进制文件 C++ 中读取二维 vector

java - 用于查找整数的二进制和线性搜索程序。如果存在则回答 yes,如果不存在则回答 no。如何让二分查找工作?

javascript - 右下角的扩展窗口

file - 如何读取 NASA .hgt 二进制文件

javascript - 将点二进制转换为 float

c++ - 检查二进制数是否能被 13 整除

JavaScript 函数在从 ASP.net 代码隐藏创建和调用时应该是未定义的

javascript - 无法读取未定义的属性 'createStream'

带有随机变量的Javascript if else语句

javascript - 关于事件的 jsfiddle 解释