JSLint使用教程

jopen 11年前

 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)中打开插件管理展示

检查JavaScript语法错误的工具JSLint使用教程

Available中选中JSLint并且Install,插件安装成功

检查JavaScript语法错误的工具JSLint使用教程

二.JSlint的使用

1.随意打开一个JS文件,然后选择 插件>>JSLint>>JSLint Current File。

检查JavaScript语法错误的工具JSLint使用教程

在控制台也能进行快捷调试,在错误的地方右击选择Show能直接定位到错误所在地

检查JavaScript语法错误的工具JSLint使用教程

2.插件>>JSLint>>option 里面包括一些选项,需要配置。

检查JavaScript语法错误的工具JSLint使用教程

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确实允许将换行符作为行结束符,但一般认为这种做法是不明确的,而且是不好的编码风格。

        ②使用iffor的语句必须使用大括号把语句块括起来。

        ③不同于其他编程语言,在JavaScript中,块不会作为变量的作用域。JavaScript只支持函数级作用域。因此,JSLint只接受作为functionifswitchwhilefordotry语句一部分的块,其他的块都会标志为错误。

        ④var只能声明一次,而且在使用之前必须声明。

JSLint会把出现在returnbreakcontinuethrow语句后面的代码标志为不可达的代码。这些语句后面必须紧跟一个结束大括号。

⑥结合Ext,常见的错误有缺少或者多了空格,函数中缺少use strictMissing '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一下代码,减少需要修改的错误的数量