编码说明:JavaScript中按位或字符设置的变量

Coding Explanation: variable set with bitwise OR character in JavaScript

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

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

虽然我读到管道字符是按位或,但我对上面发生的事情一头雾水。 如果我应该 post 更多上下文功能,请告诉我。

这绝对是个错误。逻辑或 (||) 用作空合并运算符。按位或运算不会产生注释中指出的效果。你可以通过一些测试运行它自己测试它。

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

您可以从几个示例中看出,对于传递 "maxlength" 参数的人来说,结果将非常违反直觉。

鉴于前一行中存在该评论,这看起来只是一个简单的错字。

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

maxLength = maxLength || 110;

然而,这实际上是一个坏主意,因为如果 maxLength 已设置为错误值(如零),它将被默认值替换。 可能就是你想要的,但绝不是明确的。

我可能会选择 稍微 更冗长但绝对更清晰的:

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

它仍然适合一行,而且意图非常具体。

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

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