文档章节

grunt-JSHint使用说明

Yohance
 Yohance
发布于 2015/09/18 15:53
字数 1718
阅读 508
收藏 0

JSHint介绍

是一个由javascript社区驱动开发的用于检查javascript代码错误和问题的工具,有了他,可以使你保持一个良好的编码风格。你可以很简单的配置它以适应你目前的一个编码风格。目前JSHint的源码可以在github上面找到。

JSHint的适用环境

  • 浏览器环境(browsers)

  • Node.js

  • jQuery

  • ES5

  • CouchDB

  • Prototype.js

  • Mootools.js

JSHint的选项配置

asi

如果是真,JSHint会无视没有加分号的行尾,自动补全分号一直是Javascript很有争议的一个语法特性。默认,JSHint会要求你在每个语句后面加上分号,但是如果你认为自己理解了asi(automatic semicolon insertion),你可以抛弃JSHint对分号的检查。

bitwise

如果为真,JSHint会禁用位运算符Javascript允许位运算,但是他却没有整型,位运算符要把参与运算的数字从浮点数变为整数,并在运算后再转换回来。这样他们的效率就不如在别的语言中那么高。

boss

很霸气的选项,如果为真,那么JSHint会允许在if,for,while里面编写赋值语句。一般来说,我们会在循环、判断等语句中加入值的比较来做语句的运行条件,有时候会把==错写成赋值的=,通常,JSHint会把这个认定为一个错误,但是开启这个选项的化,JSHint就不会检查判断条件中的赋值 ,你是boss,你说的算:)。

curly

如果为真,JSHint会要求你在使用if和while等结构语句时加上{}来明确代码块。Javascript允许在if等结构语句体只有一句的情况下不加括号。不过这样做可能会让你的代码读起来有些晦涩。

debug

如果为真,JSHint会允许代码中出现debugger的语句。不过建议你最好在检测代码前去掉debug的语句。

eqeqeq

如果为真,JSHint会看你在代码中是否都用了===或者是!==,而不是使用==和!=。我们建议你在比较0,''(空字符),undefined,null,false和true的时候使用===和!===。

eqnull

如果为真,JSHint会允许使用"== null"作比较。== null 通常用来判断一个变量是undefined或者是null(当时用==,null和undefined都会转化为false)。

evil

如果为真,JSHint会允许使用evaleval提供了访问Javascript编译器的途径,这有时很有用,但是同时也对你的代码形成了注入攻击的危险,并且会对debug造成一些困难。记住,Function构造函数也是另一个‘eval’,另外,当传入的参数是字符串的时候,setTimeout和setInterval也会类似于eval。

forin

如果为真,那么,JSHint允许在for in 循环里面不出现hasOwnProperty,for in循环一般用来遍历一个对象的属性,这其中也包括他继承自原型链的属性,而hasOwnProperty可以来判断一个属性是否是对象本身的属性而不是继承得来的。

immed

如果为真,JSHint要求匿名函数的调用如下:

(function(){//}());

而不是

(function(){//bla bla})();

laxbreak

如果为真,JSHint则不会检查换行。Javascript会通过自动补充分号来修正一些错误,因此这个选项可以检查一些潜在的问题。

maxerr

设定错误的阈值,超过这个阈值jshint不再向下检查,提示错误太多。

newcap

如果为真,JSHint会要求每一个构造函数名都要大写字母开头。构造器是一种使用new运算符来创建对象的一种函数,new操作符会创建新的对象,并建立这个对象自己的this,一个构造函数如果不用new运算符来运行,那么他的this会指向全局对象而导致一些问题的发生。

noarg

如果为真,JSHint会禁止arguments.caller和arguments.callee的使用arguments对象是一个类数组的对象,它具有一个索引值。arguments.callee指向当前执行的函数(这个在ES5的严格模式中被禁用了),而arguments.caller指向调用当前函数的函数(如果有的话),并且,他并不是在所有的Javascript实现里面都有。

noempty

如果为真,JSHint会禁止出现空的代码块(没有语句的代码块)。如果为真,JSHint会禁用构造器,以避免一些问题。在JSLint中会主动禁用构造器的方式以避免一些潜在问题,但其实很多构造器的使用并非有害,例如如下的调用

new  JsUIWindow();//注意这个调用是没有把构造器的结果赋值给变量的

因此,我们需要使用构造器的时候可以禁用这个选项。

nomen

如果为真,JSHint会禁用下划线的变量名。很多人使用_name的方式来命名他们的变量,以说明这是一个私有变量,但实际上,并不是,下划线只是做了一个标识。如果要使用私有变量,可以使用闭包来实现。

onevar

如果为真,JSHint期望函数只被var的形式声明一遍。

passfail

如果为真,JSHint会在发现首个错误后停止检查。

plusplus

如果为真,JSHint会禁用自增运算和自减运算++和--可能会带来一些代码的阅读上的困惑。

regexp

如果为真,JSHint会不允许使用.和[^...]的正则,因为这样的正则往往会匹配到你不期望的内容,并可能会应用造成一些危害。

undef

如果为真,JSHint会要求所有的非全局变量,在使用前都被声明。如果你不在一个本地作用域内使用var的方式来声明变量,Javascript会把它放到全局作用域下面。这样会很容易引起错误。

sub

如果为真,JSHint会允许各种形式的下标来访问对象。通常,JSHint希望你只是用点运算符来读取对象的属性(除非这个属性名是一个保留字),如果你不希望这样可以关闭这个选项。

strict

如果为真,JSHint会要求你使用use strict;语法。Strict 模式是ES5里面的一个新特性,他允许你把一个程序或者函数放在一个“严格”的作用域中。可见Resig写的一篇关于严格模式的blog严格模式做了几件事情:

1、他可以捕获一些错误和异常

2、当我们进行一下“不安全”的操作时,他会抛异常,例如访问全局变量。

3、他会禁止你使用一些奇淫技巧,或者不良的代码编写。

white

如果为true,JSHint会依据严格的空白规范检查你的代码。


© 著作权归作者所有

Yohance
粉丝 14
博文 82
码字总数 44971
作品 0
浦东
程序员
私信 提问
JSHint 使用说明

JSHint介绍 翻译自www.jshint.comJSHint(注意不是jslint:))是一个由javascript社区驱动开发的用于检查javascript代码错误和问题的工具,有了他,可以使你保持一个良好的编码风格。你可以很...

Ynataq
2015/03/16
5
1
grunt vs gulp

目前前端开发比较常见的构建工具有grunt和gulp,特点通过定义任务的方式,使用第三方插件进行js或css的文件编译,打包、压缩等工作 grunt 早期设计的前端构建框架,插件丰富 任务的定义使用配...

_huangbo
2016/06/08
5
0
Emberjs 上手 - 使用Grunt进行项目组织与创建

在要开始构建Emberjs的应用前,首先考虑一个可以组织和管理好整个JavaScript项目的方法和工具,可以使用Ember-cli,也可以使用通用的JavaScript的构建工具Grunt。 为什么需要这样的工具呢?原...

YipChooli
2015/03/28
766
0
Gulp:新一代前端构建利器(轉)

1、什么是Gulp gulp.js 是一种基于流的,代码优于配置的新一代构建工具。 和 类似。但相比于 的频繁的 操作, 的流操作,能更快地完成构建。 2、Gulp特性 使用方便 通过代码优于配置的策略,...

小寶
2014/09/18
171
0
HTMLHint v0.9.2 发布 静态扫描组件

HTMLHint是一款基于JS开发的静态扫描组件,支持所有浏览器和Nodejs平台,可以集成到IDE环境或编译系统中。 官方网站:http://htmlhint.com/ HTMLHint特色 跨平台支持,支持所有浏览器及Nodej...

YanisWang
2013/04/07
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

射频特征阻抗

Characteris Impendance(特性阻抗,也称为‘特征阻抗’)是我们经常看到并使用自己的术语之一,但非常模糊且难以解释。以下是来自几个不同来源的Characteris Impendance(特性阻抗)的一些定义。...

demyar
16分钟前
1
0
Spring Boot Tomcat配置项

参数配置容器 server.xx开头的是所有servlet容器通用的配置,server.tomcat.xx开头的是tomcat特有的参数,其它类似。 所有参数绑定配置类:org.springframework.boot.autoconfigure.web.Serv...

xiaomin0322
20分钟前
2
0
微课程 | 第二课《Docker 安装方式介绍》

微课程 | 第二课《Docker 安装方式介绍》视频 https://v.youku.com/v_show/id_XNDQ0NDUzNjkxNg==.html?spm=a2hzp.8244740.0.0 上一期我们介绍了 DBLE 的基本概况,下面进入我们的正题,正题基...

爱可生
20分钟前
2
0
GUAVA--基础工具(Preconditions)

1、前置条件 俗话说丑话讲在前面,在做某些事情的时候是需要做一些前置条件的。假如需要修改一条数据的话,当参数传进来,我们要先查询这条数据是否存在。这时候就需要一个if了,如果参数还需...

MrYuZixian
34分钟前
6
0
PythonSpot 中文系列教程 · 翻译完成

原文:PythonSpot Python Tutorials 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 在线阅读 ApacheCN 学习资源 目录 PythonSpot 中文系列教...

ApacheCN_飞龙
42分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部