jshint配置(js檢查)

JSHint的選項配置

asi

若是是真,JSHint會無視沒有加分號的行尾,自動補全分號一直是Javascript頗有爭議的一個語法特性。默認,JSHint會要求你在每一個語句後面加上分號,可是若是你認爲本身理解了asi(automatic semicolon insertion),你能夠拋棄JSHint對分號的檢查。html

bitwise

若是爲真,JSHint會禁用位運算符Javascript容許位運算,可是他卻沒有整型,位運算符要把參與運算的數字從浮點數變爲整數,並在運算後再轉換回來。這樣他們的效率就不如在別的語言中那麼高。vim

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的時候使用===和!===。curl

eqnull

若是爲真,JSHint會容許使用"== null"做比較。== null 一般用來判斷一個變量是undefined或者是null(當時用==,null和undefined都會轉化爲false)。函數

evil

若是爲真,JSHint會容許使用evaleval提供了訪問Javascript編譯器的途徑,這有時頗有用,可是同時也對你的代碼造成了注入攻擊的危險,而且會對debug形成一些困難。記住,Function構造函數也是另外一個‘eval’,另外,當傳入的參數是字符串的時候,setTimeout和setInterval也會相似於eval。this

forin

若是爲真,那麼,JSHint容許在for in 循環裏面不出現hasOwnProperty,for in循環通常用來遍歷一個對象的屬性,這其中也包括他繼承自原型鏈的屬性,而hasOwnProperty能夠來判斷一個屬性是不是對象自己的屬性而不是繼承得來的。url

immed

若是爲真,JSHint要求匿名函數的調用以下:debug

(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嚴格模式作了幾件事情:

一、他能夠捕獲一些錯誤和異常

二、當咱們進行一下「不安全」的操做時,他會拋異常,例如訪問全局變量。

三、他會禁止你使用一些奇淫技巧,或者不良的代碼編寫。

white

若是爲true,JSHint會依據嚴格的空白規範檢查你的代碼。

相關文章
相關標籤/搜索