Grunt jshint 配置

jsHint 同 jsLint 一样都是 js 代码检查工具

jsHint 规则 参考资料
http://www.cnblogs.com/code/articles/4103070.html
http://www.htmlhifive.com/conts/web/view/library/JSLint_JSHint

bitwise

1
// 禁用位运算符(如^,&)

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

1
// 变量定义前禁止使用

newcap

1
// 构造函数名首字母必须大写

noarg

1
// 禁止使用arguments.caller和arguments.callee

noempty

1
// 禁止出现空的代码块

nonew

1
// 禁止使用构造器

plusplus

1
// 禁止使用++和--

undef

1
// 禁止使用不在全局变量列表中的未定义的变量

strict

1
// 强制使用ES5的严格模式

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

1
// 允许省略分号

boss

1
// 允许在if,for,while语句中使用赋值;在条件语句中使用赋值经常是笔误if (a = 10) {}

debug

1
// 允许debugger语句

eqnull

1
2
// 允许==null
// ==null通常用来比较=== null;=== undefined

evil

1
// 允许使用eval

expr

1
// 允许应该出现赋值或函数调用的地方使用表达式

iterator

1
2
// 允许__iterator__;
// 不是所有的浏览器都支持__iterator__。

lastsemic

1
2
// 允许单行控制块省略分号
var name = (function() { return 'Anton' }());

laxbreak

1
// 允许不安全的行中断(与laxcomma配合使用)

laxcomma

1
// 允许逗号开头的编码样式

loopfunc

1
// 允许循环中定义函数

onecase

1
// 允许只有一个case条件的switch语句吗

proto

1
// 允许 proto(不是所有的浏览器都支持__proto__.)

regexdash

1
// 在正则表达式的控制语句,连字符开头或方括号的结束 - 容忍的存在。

scripturl

1
// 允许 javascript:;

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

1
// 允许严格模式下在非构造函数中使用this