JSLint使用教程
JavaScript 作为一门语法灵活多变且对格式要求相对松散的语言,代码格式的混乱和某些语言特性的不正确使用,往往使得最终交付的产品中包含许多因编码风格约定造成的未 预见的行为或错误,这种习惯性的问题如果不及时指出并修改,往往会在项目的迭代过程中不断的重现,严重影响 Web 产品的稳定性与安全性。
JSLint 正是 Douglas Crockford 为解决此类问题创建的工具,JSLint 除了能指出这些不合理的约定,还能标出结构方面的问题。虽然 JSLint 不能保证代码逻辑一定正确,但却有助于发现错误并教会开发人员一些好的编码实践。值得一提的是 JSLint 工具本身也是一段 JavaScript 代码,它是检验 JavaScript 代码质量的 JavaScript 脚本。
JSLint 对 JavaScript 脚本的质量检测主要包括以下几个方面:
- 检测语法错误:例如大括号“{}”的配对错误。
- 变量定义规范:例如未定义变量的检测。
- 代码格式规范:例如句末分号的缺失。
- 蹩脚语言特性的使用检测:如 eval 和 with 的使用限制。
目前,与 JSLint 功能类似的 JavaScript 代码检测工具有很多,包括:YUI Test、Firebug、MS Script Debugger 、CompanionJS 等等,它们中大多数都是以浏览器插件的形式存在于客户端浏览器进行 JavaScript 运行时的检测和调试,JSLint 与这些工具的重要区别在于其更加注重静态代码格式的检测,而这也正是当前火热的敏捷开发中持续构建所需要和提倡的。
一.安装JSLint插件
1.安装Notepad++,下载地址:http://pan.baidu.com/s/1qWGu6du
2.安装JSLint插件
打开Notepad++,在插件-插件管理(Plugin Manager)中打开插件管理展示
在Available中选中JSLint并且Install,插件安装成功
二.JSlint的使用
1.随意打开一个JS文件,然后选择 插件>>JSLint>>JSLint Current File。
在控制台也能进行快捷调试,在错误的地方右击选择Show能直接定位到错误所在地
2.插件>>JSLint>>option 里面包括一些选项,需要配置。
browser: true
允许浏览器预定义的全局函数。
例如:
setTimeout(function() { alert("a"); });
vars : true //允许每个函数有多个var声明
sloppy: true //是否忽视严格模式"use strict";
maxerr : 允许做大的错误数,默认是50
每个js文件中JSLint所发现的最大错误数,错误过多时,只返回文件名和错误总数,不返回具体错误
其他的用默认即可。
predefined的内容:Ext,getConfig,setConfig,Highcharts,getCtrl,dojo,MyApp
3.技巧
JSLint可能会把一些结构方面的错误标志为可疑的编码实践,以下列出了其中一部分(完整的列表可以参考JSLint的文档)http://www.jslint.com/lint.html。
①JSLint要求所有代码行都以分号结束。尽管JavaScript确实允许将换行符作为行结束符,但一般认为这种做法是不明确的,而且是不好的编码风格。
②使用if和for的语句必须使用大括号把语句块括起来。
③不同于其他编程语言,在JavaScript中,块不会作为变量的作用域。JavaScript只支持函数级作用域。因此,JSLint只接受作为function、if、switch、while、for、do和try语句一部分的块,其他的块都会标志为错误。
④var只能声明一次,而且在使用之前必须声明。
⑤JSLint会把出现在return、break、continue或throw语句后面的代码标志为不可达的代码。这些语句后面必须紧跟一个结束大括号。
⑥结合Ext,常见的错误有缺少或者多了空格,函数中缺少use strict:Missing 'use strict' statement.,{}未对齐,变量未定义,代码写在不是期望的位置等,这些大部分都可以在option里面配置是否验证。
⑦for in 语句
避免遍历原型链上所有属性,建议如下写法:
for(name in object) { if(object.hasOwnProperty(name)) { .... } }
三.参考资料
1.IBM文档(使用JSLint保证代码质量)
http://www.ibm.com/developerworks/cn/web/1105_linlin_jslint/
四.附-JSTool
在用JSLint规范代码前可使用插件JSTool format一下代码,减少需要修改的错误的数量