1 - BoundOrAssignedEvalOrArguments
描述
"eval" and "arguments" must not be bound or assigned
严重性
CRITICAL
错误现象示例
eval = 17;
arguments++;
++eval;
var obj = { set p(arguments) { } };
var eval;
try { } catch (arguments) { }
修复建议
//不要修改eval和arguments
2 - FunctionDeclarationsWithinBlocks
描述
Do not use function declarations within blocks
严重性
BLOCKER
错误现象示例
if(x){
function foo() {}
}
修复建议
if(x){
var foo = function() {};
}
3 - DuplicatePropertyName
描述
Duplicate property names not allowed in object literals
严重性
CRITICAL
错误现象示例
vardata ={
'key': 'value',
'key': 'value',
}
修复建议
vardata ={
'key1': 'value',
'key2': 'value',
}
4 - DuplicateFunctionArgument
描述
Function argument names should be unique
严重性
CRITICAL
错误现象示例
function compute(a, a, c) {}
修复建议
function compute(a, b, c) {}
5 - NestedIfDepth
描述
Avoid deeply nested if statements
严重性
MINOR
错误现象示例
function sayHello() {
if (true) {
if (true) {
if (true) {
if (true) { // Non-Compliant
return;
} else {
return;
}
} else if (true) { // Compliant
if (true) { // Non-Compliant
return;
}
}
}
}
}
修复建议
//尽量减少if语句的嵌套层次,最多不要超过5层
6 - ConstructorFunctionsForSideEffects
描述
Avoid use of constructor functions for side-effects
严重性
MINOR
错误现象示例
new
MyConstructor();
修复建议
var something
= new MyConstructor();
7 - Eval
描述
Avoid use of eval
严重性
MINOR
错误现象示例
ar myCode =
'alert('Howdy?');';eval(myCode);
修复建议
//避免使用eval函数,如果在页面上有使用eval()函数,就需要特别正确的方式保证它正常执行。
8 - CommentedCode
描述
Sections of code should not be "commented out"
严重性
MINOR
错误现象示例
//isValid(element);
修复建议
//代码段不该被注释掉,无用代码应删除
9 - SingleQuote
描述
Use single quote for string literals
严重性
MINOR
错误现象示例
var firstParameter
= “something”;
修复建议
//使用单引号效率更高
var secondParameter
= 'somethingElse';
10 - CurlyBraces
描述
Always use curly braces for if/else/for/while/do statements
严重性
MAJOR
错误现象示例
if (i> arr.length)
continue;
修复建议
//if/else/for/while/do语句都应使用花括号
if (i> arr.length){
continue;
}
11 - NonEmptyCaseWithoutBreak
描述
An unconditional break statement shall terminate every non-empty switch-clause
严重性
MAJOR
错误现象示例
switch (param) {
case 0:
doSomething();
case 1:
doOtherthing();
default:
doSomethingElse();
}
修复建议
switch (param) {
case 0:
doSomething();
break;
case 1:
case 2:
doOtherthing();
break;
default:
doSomethingElse();
break;
}
//注意:空的case语句允许指定相同的行为
12 - FunctionDefinitionInsideLoop
描述
Avoid definition of functions inside loops
严重性
MAJOR
错误现象示例
var funs = [];
for (var i = 0; i < 13; i++) {
funs[i] = function() {
return i;
};
}
修复建议
//不要在循环中定义函数,可以在循环外定义函数,然后在循环中调用,
//也可以将循环中的函数改为自执行的。
var funs = [];
for (var i = 0; i < 13; i++) {
funs[i] = (function(j) {
return function(){
return j;
};
})(i);
}
13 - AssignmentWithinCondition
描述
Avoid doing assignments in the condition part of if/while/for statements
严重性
MAJOR
错误现象示例
if (dayNumber = getClickedDayNumber(dayInfo)) {
alert('day number found : ' + dayNumber);
}
修复建议
var value = someFunction();
if (value === fon