jsHint 同 jsLint 一样都是 js 代码检查工具
jsHint 规则 参考资料
http://www.cnblogs.com/code/articles/4103070.html
http://www.htmlhifive.com/conts/web/view/library/JSLint_JSHint
bitwise
curly
1
| // if 和 while 等语句中使用{}来明确代码块
|
eqeqeq
1
| // 使用 === 和 !== 替代 == 和 !=
|
forin
1
| // 在 for in 循环中使用 Object.prototype.hasOwnProperty() 来过滤原型链中的属性
|
immed
1 2 3 4 5 6 7 8 9
| // 匿名函数调用必须 (function() { // body }()); // 而不是 (function() { // body })(); // 这是为了表明,表达式的值是函数的结果,而不是函数本身。
|
latedef
newcap
noarg
1
| // 禁止使用arguments.caller和arguments.callee
|
noempty
nonew
plusplus
undef
strict
freeze
1 2 3 4
| // 禁止复写原生对象(如Array, Date)的原型 /* jshint freeze:true */ Array.prototype.count = function (value) { return 4; }; // -> Warning: Extending prototype of native object: 'Array'.
|
asi
boss
1
| // 允许在if,for,while语句中使用赋值;在条件语句中使用赋值经常是笔误if (a = 10) {}
|
debug
eqnull
1 2
| // 允许==null // ==null通常用来比较=== null;=== undefined
|
evil
expr
1
| // 允许应该出现赋值或函数调用的地方使用表达式
|
iterator
1 2
| // 允许__iterator__; // 不是所有的浏览器都支持__iterator__。
|
lastsemic
1 2
| // 允许单行控制块省略分号 var name = (function() { return 'Anton' }());
|
laxbreak
1
| // 允许不安全的行中断(与laxcomma配合使用)
|
laxcomma
loopfunc
onecase
1
| // 允许只有一个case条件的switch语句吗
|
proto
1
| // 允许 proto(不是所有的浏览器都支持__proto__.)
|
regexdash
1
| // 在正则表达式的控制语句,连字符开头或方括号的结束 - 容忍的存在。
|
scripturl
shadow
1 2 3 4 5 6 7 8 9 10 11
| // 允许变量shadow function test() { var x = 10; if (true) { var x = 20; } return x; } // 基于“函数作用域”,多次定义变量和单次定义是没有区别的,但是会造成阅读障碍。
|
sub
1 2
| // 允许person[‘name’] // JSHint推荐使用 person.name 代替 person[‘name’]
|
supernew
1
| // 允许new function() {…}和new Object;
|
validthis