编码说明:在JavaScript中使用按位OR字符设置的变量

时间:2016-12-30 01:54:05

标签: javascript bit-manipulation bitwise-operators bitwise-or

今天我遇到了一些我不了解的JS,谷歌搜索按位操作并没有真正帮助我。有人可以解释一下吗?

     function createExcerpt(string, maxLength) {
          // Set a default value of maxLength of 110
          maxLength = maxLength | 110;
          ...

虽然我读到管道字符是按位OR,但我对上面发生的事情感到茫然。 如果我应该为上下文发布更多函数,请告诉我。

2 个答案:

答案 0 :(得分:2)

这绝对是个错误。逻辑OR(||)用作空合并运算符。按位ORing不会产生评论中指示的效果。您可以通过一些测试运行它来自己测试。

110 | 110 = 110
120 | 110 = 126
90 | 110 = 126
null | 110 = 110
50 | 110 = 126
200 | 110 = 238

你可以从几个例子中看出结果对于传递" maxlength"的人来说是非常反直觉的。论点。

答案 1 :(得分:2)

鉴于前一行中存在该评论,这看起来很简单。

通常使用逻辑 or运算符||来设置默认值,因此它几乎可以肯定是:

maxLength = maxLength || 110;

然而,这实际上是一个坏主意,因为如果将maxLength设置为假值(如零),它将被替换为默认值。 可能是你想要的,但它并不清楚。

我可能会选择稍微更详细但更清楚:

if (maxLength === undefined) { maxLength = 110; }

它仍然适用于一行,意图非常具体。

更好的方法,假设您有ES6可用,将使用直接烘焙到函数调用中的默认参数:

function createExcerpt(string, maxLength = 110) {
    ...
}