编码说明: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) {
...
}
我 运行 今天遇到了一些我不理解的 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) {
...
}