如何利用JSHint减少JavaScript的错误
作者:daisy 发布时间:2024-05-28 15:37:40
前言
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 demo1.js
JSHint告诉我们在demo1.js文件的第8行有一个错误,原因:缺少一个分号。
如果我们补上缺少的分号,再次运行这个命令,就不会有任何错误信息输出了。
配置JSHint
JSHint有一个默认的配置来分析您的代码,但它的配置设置被设计的非常灵活。 有四种方式来为JSHint提供配置处理文件。
一种方式是使用 --config
参数来指定配置文件:
jshint demo1.js --config config.json
另一种方式是把配置放入一个叫.jshintrc的文件里, 因为 JSHint 会在同级目录下搜索这个配置文件用于代码分析,如果没有找到,它会继续上级目录查找直到根目录 ,这样就允许我们对一个工程设置不同的配置文件。
第三种方式是在 package.json 文件的 jshintConfig 属性下放入配置信息。
这三种方法中的任何一种,配置信息都是JSON格式指定每一个参数来告诉JSHint选项是打开或关闭。例如:在下面的配置文件中的“unused” 和“undef” 是来激活未使用和未定义变量的告警。 “curly” 要求您总是在循环和条件块加上大括号。 “eqeqeq” 表示禁止使用 == 和!= 而应该使用 === and !==.。“globals” 用于指定没有定义在代码中的全局变量白名单。
第四种方式是以注释的方式将配置信息写入代码文件中。
你可以查看不同的配置选项控制JSHint的行为。
一个小例子
接下来,让我们操作一下在上面提到的config.json配置文件中的选项。 假设我们有如下的一个 JavaScript 文件,这只是一小段仅供学习的代码。
如果我们执行jshint 命令demo2.js --config config.json
,我们会得到如下的结果:
在我们的代码中有4个错误。在第9行JSHint提示应该用大括号包裹 “if” 代码块。 定义了变量subscription_id
但没有使用。 在第9行和11行, “confirm” 和“console” 没有定义。
我们只需稍微修改就能避免前两个错误:
现在,让我们在 config.json文件中添加一个 devel 选项并设为 true,这样JSHint 就能识别出“confirm” 和“console” 。
至此,如果我们再次运行 jshint 命令,就没有任何错误了。
总结
JSHint是一个减少代码错误的非常好的工具。很多编辑器都提供JSHint支持。刚兴趣的朋友可以再深入研究JSHint,以上就是利用JSHint减少JavaScript错误的全部内容,希望对大家使用Javascript能有所帮助。


猜你喜欢
- Saver的用法1. Saver的背景介绍我们经常在训练完一个模型之后希望保存训练的结果,这些结果指的是模型的参数,以便下次迭代的训练或者用
- 如何避免磁盘临时表因为内存储引擎不支持TEXT和BLOB数据类型, 使用到BLOB和TEXT列的查询和使用隐式临时表的查询将不得不使用MyI
- 1. 安装 Sublime Text 3虽然现在的 Sublime 3 还处于 beta 阶段, 但已经非常稳定了, 而且速度比 Subli
- 目录解析器和预处理器查询优化器MySQL查询优化需要经过解析、预处理和优化三个步骤。在这些过程中,都有可能发生错误。本篇文章不会深入讨论错误
- 1、背景a、搜狗也发布了自己的人工智能 api,包括身份证ocr、名片ocr、文本翻译等API,初试感觉准确率一般般。b、基于python3
- 简介str是采用Unicode编码方式的序列,主要用于显示bytes是字节序列,主要用于网络和文件传输bytearray和bytes是一样的
- 目录演示地址:关于程序开发环境资源和依赖包NASA TV feed 流Python第三方库完整代码演示地址:https://replit.c
- 之前用Crystal做了一个数字转English Word的Formula刚刚心血来潮, 大半个晚上写了JS版本的数字转换, 由于JS的Bu
- 摘要: 有个C++项目是读取配置参数文件并打印对应的结果,后来需要多次修改配置文件并运行,于是想到写个python脚本执行这一过程。写一个测
- 一、python邮件模块简介email模块属于内置模块,用来自定义邮件的中文、主题、日期、附件等信息;smtplib模块属于内置模块,它对s
- 新建图像文件后选Channels面板,新建Alpha1通道:输入文字; &nbs
- 首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Un
- 存储过程采用的是select top 加 not in的方式完成,速度也算是相当快了 我测试过了百万级数据量一般查询在1秒一下,贴出来大家交
- 1、确定服务器上的防火墙没有阻止 3306 端口 MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无
- 假设你的变量叫做 MyArray,我们可作如下处理:Dim strDim strDelimiterstrDelimite
- 本文转自微信公众号:"算法与编程之美",一、问题描述在collections模块中的defauldict使用时与dict
- HTML与CSS在Flash中的应用:不小心看到同事Den在弄个小东西:在Flash里使用HTML和CSS,代码是这样:var m
- 本文实例讲述了Python高阶函数、常用内置函数用法。分享给大家供大家参考,具体如下:高阶函数:允许将函数作为参数传入另一个函数;允许返回一
- mysql-5.7.17的安装在文章下面有介绍,大家可以参考下。下面先给大家介绍下Mysql 5.7.17安装后登录mysql的教程,一起看
- 分布式 id 生成器在分布式场景中,唯一 id 的生成算比较重要。而通常在高并发场景中,需要类似 MySQL 自增 id 一样不断增长且又不