Sea*_*son 45 javascript jslint jshint
我正在使用这段JavaScript生成一个UID:
(原版的:)
//If ID has not been defined then generate a new unique ID.
if(!id){
id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); });
}
Run Code Online (Sandbox Code Playgroud)
(格式化,以便可以阅读:)
// If ID has not been defined then generate a new unique ID.
if (!id) {
id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
/[xy]/g,
function (c) {
var r = Math.random() * 16 | 0,
v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
}
);
}
Run Code Online (Sandbox Code Playgroud)
JSHint不喜欢使用按位OR和AND运算符.我想知道如何重写这个更"标准友好".
编辑:JSHint声明:
Line 8: id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); });
Unexpected use of '|'.
Line 8: id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); });
Expected '===' and instead saw '=='.
Line 8: id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); });
Unexpected use of '&'.
Line 8: id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); });
Unexpected use of '|'.
Run Code Online (Sandbox Code Playgroud)
zer*_*kms 69
放
/*jshint bitwise: false*/
Run Code Online (Sandbox Code Playgroud)
在文件的顶部
可用选项列表:http://jshint.com/docs/options/
你把这么多代码塞进了一行(为什么?),你无法分辨出jshint指向你的是什么.我重新格式化了代码,我看到了这个:
var r = Math.random() * 16 | 0,
Run Code Online (Sandbox Code Playgroud)
在那| 0做什么?这是一个不必要的无操作.更新:似乎是一种int-ify浮点数的方法.
Jshint似乎不喜欢其他东西,但至少要摆脱这个.并传播您的代码,以便您(和其他人)可以阅读它.