/*
JSLint
JSLint:一个JS语法检查器和校验器
未定义的变量和函数
JSLint期望所有的变量和函数在使用或调用前都已被声明
全局声明注释可以用来列出所有你明确用做全局变量的名字。JSLint可以用此信息区辨认拼写错误和被遗忘的var声明
分号
JSLint期望在除了for,function,if,switch,try和while之外的每个语句后面都跟着一个分号
换行
JSLint期望代码很长的语句只在下面这些标点符号或运算符之后换行
, . ; : { } ( [ = < > ? ! + - * / % ~ ^ | &
== != <= >= += -= *= /= %= ^= |= &= << >> || &&
=== !== <<= >>= >>> >>>=
逗号
逗号运算符可能导致过于复杂的表达式,也可能掩盖一些错误编程
JSLint期望看到逗号被用作一个分隔符,而不是运算符
必须的代码块
JSLint期望if和for语句由代码块构成,即语句都由{}围起来
被禁止的代码块
JSLint期望只有function,if,switch,while,for,do和try语句使用代码块
表达式语句
表达式语句被期望是赋值、函数/方法调用或delete操作
for in语句
会遍历出所有原型链中继承的成员属性
每个for in语句的主体都应该被包围在一个用于过滤的if语句中
switch语句
JSLint期望在下一个case或default语句之前有下面这些与剧中的一条:break,return或throw
var语句
JSLint期望的如下:
一个var语句只会被声明一次,并且它会在使用前被声明
函数会在使用前被声明
参数不会用var再声明一次
JSLint不期望如下:
把arguments当做变量名用var语句声明
在代码块中定义变量
with语句
JSLint不期望看到with语句
=
JSLint不期望在if或while语句的条件部分看到赋值语句
==和!=
==和!=u运算符在执行比较前会做强制类型转换,使用===和!==运算符始终是首选
标签
JSLint期望标签只用在会与break语句进行交互的下列语句中:switch、while、do和for
JSLint期望标签有别于变量和参数
不可达代码
JSLint期望return、break、continue、或throw语句的后面会紧接一个}、case或default语句
混乱的正负号
JSLint期望+不会跟在+或++的后面,而-不会跟在-或--的后面,尽量使用圆括号
++ 和 --
它们只会让代码更糟糕
位运算符
它们很慢,而且很少用于浏览器应用程序
eval是魔鬼
eval函数及Function、setTimeout、setInterval能不用就不用
void
JSLint不期望看到void,它没什么用
正则表达式
JSLint会查找隐患
JSLint期望出现在一个正则表达式之前的字符时(、=、:或,
构造器函数和new运算符
JSLint强制约定构造器函数的首字母必须大写,它不期望看到一个首字母不是大写的函数与new连用,也不期望看到一个首字母是大写的函数被单独使用
*/