如何利用JSHint减少JavaScript的错误


Posted in Javascript onAugust 23, 2016

前言

JSHint用于分析和验证JavaScript代码是否符合您的编码规则。这个强大的工具可以帮助发现您代码中错误和问题T,它强制你的团队保持一定的编码惯例和风格,使得代码可靠和更容易阅读.

在这篇文章中,我将向您展示如何安装、配置和使用JSHint。 还包括一个例子,列出了一些我最喜欢的能使用JSHint的编辑器。

安装 JSHint

安装JSHint非常容易,你可以使用 Node 包管理器 (npm)来做。如果你还没有安装npm,你可以从 nodeJS website下载最新版,来安装Node.js 和npm.

一旦安装后npm,你就可以使用如下命令来安装JSHint:

npm install jshint -g

-g 参数是告诉npm我们要全局安装,这样我们就能在任何目录下调用这个命令。

通过命令行检查代码

现在JSHint 已经安装好了,让我们在命令行方式下使用jshint来分析一个JavaScript代码文件。

下面是一个文件名为 demo1.json的文件:

如何利用JSHint减少JavaScript的错误

我们使用如下命令来分析代码:

jshint demo1.js

JSHint告诉我们在demo1.js文件的第8行有一个错误,原因:缺少一个分号。

如何利用JSHint减少JavaScript的错误

如果我们补上缺少的分号,再次运行这个命令,就不会有任何错误信息输出了。

配置JSHint

JSHint有一个默认的配置来分析您的代码,但它的配置设置被设计的非常灵活。 有四种方式来为JSHint提供配置处理文件。

一种方式是使用 --config 参数来指定配置文件:

jshint demo1.js --config config.json

另一种方式是把配置放入一个叫.jshintrc的文件里, 因为 JSHint 会在同级目录下搜索这个配置文件用于代码分析,如果没有找到,它会继续上级目录查找直到根目录 ,这样就允许我们对一个工程设置不同的配置文件。

第三种方式是在 package.json 文件的 jshintConfig 属性下放入配置信息。

这三种方法中的任何一种,配置信息都是JSON格式指定每一个参数来告诉JSHint选项是打开或关闭。例如:在下面的配置文件中的“unused” 和“undef” 是来激活未使用和未定义变量的告警。 “curly” 要求您总是在循环和条件块加上大括号。 “eqeqeq” 表示禁止使用 == 和!= 而应该使用 === and !==.。“globals” 用于指定没有定义在代码中的全局变量白名单。

如何利用JSHint减少JavaScript的错误

第四种方式是以注释的方式将配置信息写入代码文件中。

如何利用JSHint减少JavaScript的错误

你可以查看不同的配置选项控制JSHint的行为。

一个小例子

接下来,让我们操作一下在上面提到的config.json配置文件中的选项。 假设我们有如下的一个 JavaScript 文件,这只是一小段仅供学习的代码。

如何利用JSHint减少JavaScript的错误

如果我们执行jshint 命令demo2.js --config config.json,我们会得到如下的结果:

如何利用JSHint减少JavaScript的错误

在我们的代码中有4个错误。在第9行JSHint提示应该用大括号包裹  “if” 代码块。 定义了变量subscription_id 但没有使用。 在第9行和11行,  “confirm” 和“console” 没有定义。

我们只需稍微修改就能避免前两个错误:

如何利用JSHint减少JavaScript的错误

现在,让我们在 config.json文件中添加一个 devel 选项并设为 true,这样JSHint 就能识别出“confirm” 和“console” 。

如何利用JSHint减少JavaScript的错误

至此,如果我们再次运行 jshint 命令,就没有任何错误了。

总结

JSHint是一个减少代码错误的非常好的工具。很多编辑器都提供JSHint支持。刚兴趣的朋友可以再深入研究JSHint,以上就是利用JSHint减少JavaScript错误的全部内容,希望对大家使用Javascript能有所帮助。

Javascript 相关文章推荐
js 实现浏览历史记录示例
Apr 20 Javascript
jquery实现通用版鼠标经过淡入淡出效果
Jun 15 Javascript
将json转换成struts参数的方法
Nov 08 Javascript
关于vue.js v-bind 的一些理解和思考
Jun 06 Javascript
JavaScript对JSON数据进行排序和搜索
Jul 24 Javascript
Node.js学习之查询字符串解析querystring详解
Sep 28 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
Oct 27 Javascript
快速处理vue渲染前的显示问题
Mar 05 Javascript
详解处理bootstrap4不支持远程静态框问题
Jul 20 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
Sep 13 Javascript
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
js canvas实现五子棋小游戏
Jan 22 Javascript
jQuery事件处理的特征(事件命名机制)
Aug 23 #Javascript
深入浅出 jQuery中的事件机制
Aug 23 #Javascript
javascript实现简单的on事件绑定
Aug 23 #Javascript
js实现图片淡入淡出切换简易效果
Aug 22 #Javascript
JS对HTML表格进行增删改操作
Aug 22 #Javascript
AngularJS中$http服务常用的应用及参数
Aug 22 #Javascript
详解AngularJS如何实现跨域请求
Aug 22 #Javascript
You might like
虫族 ZERG 概述
2020/03/14 星际争霸
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
php字符串函数学习之substr()
2015/03/27 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
代码整洁之道(重构)
2018/10/25 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
python爬取个性签名的方法
2018/06/17 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
德国网上宠物店:Zoobio
2018/05/23 全球购物
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
大学生年度自我鉴定
2013/10/31 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
数据保密承诺书
2014/06/03 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server