今天我遇到了一些我不了解的JS,谷歌搜索按位操作并没有真正帮助我。有人可以解释一下吗?
function createExcerpt(string, maxLength) {
// Set a default value of maxLength of 110
maxLength = maxLength | 110;
...
虽然我读到管道字符是按位OR,但我对上面发生的事情感到茫然。 如果我应该为上下文发布更多函数,请告诉我。
答案 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) {
...
}