JSLint报告意外使用'&'和'|' - 我想清理一下

Zha*_*ami 50 javascript jslint

我试图让我的Javascript代码100%JSLint干净.

我有一些JS代码,我从其他地方提取过来创建一个UUID.该代码具有以下行:

s[16] = hexDigits.substr((s[16] & 0x3) | 0x8, 1);
Run Code Online (Sandbox Code Playgroud)

这一行引发JSLint生成两条错误消息:

1) Unexpected use of '&'
2) Unexpected use of '|'
Run Code Online (Sandbox Code Playgroud)

我不明白为什么 - 我很欣赏有关如何重新编码以消除错误消息的建议.

Ben*_*tto 82

"为什么"的原因是JS中的实际按位操作极为罕见,而出现在JS代码中的那些运算符几乎总是布尔版本(&&,||)的拼写错误.这就是JSLint关心的原因.这是对按位操作的合法使用.我相信你可以用bitwise旗子来警告警告:

/*jslint bitwise: true */
Run Code Online (Sandbox Code Playgroud)

  • 我用"/*jslint bitwise"包装"违规"代码:false*/和/*jslint bitwise:true*/效果很好. (19认同)
  • 这不是罕见的,而是Crockford认为这很糟糕.它曾经是,因为JS中的所有东西都是字符串,所以按位运算符最终变得更加昂贵.但现代JS引擎为它们进行了优化,因此不再是这样. (3认同)