JSHint 与 JSLint 的区别与选择

近来 JavaScript 开源项目中,越来越多的重要项目开始从 JSLint 转而使用 JSHint,新的开源项目大多已开始就是用了 JSHint 而 JSLint。JSHint 和 JSLint 都是用于帮助开发者侦测 JavaScript 代码的错误和潜在问题的静态代码分析工具。不少开发者一开始接触这类工具会被两者混淆,本文试图清晰地解释两者的区别与共同点,以便开发者在项目中更好的选择适合自身的分析工具,而不必消耗更多的时间先深入学习每个工具后再做决定。

关于教程

作者:tanshuai,电邮: i@tanshuai.com

为了更好的服务于开发者,本教程将会持续更新,勘误并完善内容。若发现本文的错误,建议或意见均可联系本文作者。

JSLint 介绍

JSLint 与2002年发布,是一个历史悠久的 JavaScript 静态代码分析工具,因此时常会在一些 JavaScript 经典书籍中提及,如《JavaScript 权威指南(第6版)》。

我们以往经常会在一些开源项目中发现这样的代码注释:

jslint complaints about the below line, but this is fine

这是因为 JSLint 的作者 Douglas Crockford 制订了一套 JavaScript 编码规则,JSLint 通过检查和分析 JavaScript 代码,将任何违反规则的代码警告给开发者,且无法通过配置关闭一些开发者认为不是问题的警告,而导致检查和开发无法继续下去。

例如在 JavaScript 语法规范中;分号作为每条代码语句的结尾是可选的(即可有可无),现今不少新的开源项目已经不再使用分号,而直接采用换行作为一个行代码的结尾。而这种符合 JavaScript 语法规范的代码是不能被 JSLint 检查通过的。

JSHint 介绍

JSHint 发布不久并在近期才开始被逐步大量项目采用的与 JSLint 具有相同用途的 JavaScript 静态代码分析工具,JSHint 是在 JSLint 代码基础上二次开发而来的。

JSHint 设计得非常可配置,提供了丰富的指令和选项,可根据开发者以及研发团队的自身需要调整JSHint符合自己的编码规则、风格和品位。

JSLint 还是 JSHint ?

联系

  • 一样的用途
  • 均拥有大量的用户
  • 相同的 JavaScript 代码检查和分析内核
  • 均已成功用于多个知名的 JavaScript 项目

区别

  • JSLint 对代码的合规要求极为严格
  • JSHint 对代码的合规要求可以很宽松
  • JSLint 可配置的选项很少
  • JSHint 可配置的选项很多

选择 JSHint

如果在工程中首次引入静态代码分析工具,那么本文首推使用 JSHint,该程序的启动成本以及对开发者水平的要求均较低,特别在团队中,不同的技术水平的团队成员均能够较好的适应。

极客类程序员、采用新技术新风格的开发者、具备自有编码规范的研发团队只能够采用 JSHint,因为它的高度可配置性,可以符合不同的编码风格和规范。

选择 JSLint

如果开发者自己或团队中几乎所有的成员都具有较高研发水平,建议采用 JSLint,能够写出更加严谨的高品质代码,但会伴随着时间效率下降的代价,若为参与者众多的大型项目,这样的代价也是值得的。

JavaScript 编码风格的简单权衡

JavaScript 在诞生及设计之初就一个宽松编程语言,这是一把双刃剑,既提高了编程的效率,也降低了严谨性。随着 JavaScript 不断发展,现已经成为世界上第一大程序语言,采用 JavaScript 开发的软件也越发庞大和复杂,其优势和问题均越发的不可避免的被放大了。因此开发者需要权衡在效率与严谨性上的投入,以高效的开发出高质量的 JavaScript 程序。

本文认为 JavaScript 的编程中在保证软件品质的前提下,首要确保编程效率,其次才是严谨性。由于 JavaScript 特性所致,过度追求 JavaScript 代码的严谨性会比其它更为严谨的程序语言花费更多的时间,且易牺牲代码执行性能。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值