JSLint=》JSHint=》ESLint 是由不同開發(fā)者維護(hù),逐步發(fā)展的lint工具,其目的是使代碼風(fēng)格更加一致并避免錯(cuò)誤。
ESLint
完全支持ES6+、支持JSX、兼容了JSLint和JSHint的規(guī)則、支持更多更靈活的自定義規(guī)則配置、可以根據(jù)錯(cuò)誤定位到對(duì)應(yīng)的規(guī)則。
可以在VSCode中使用ESLint插件實(shí)時(shí)檢查,也可以通過npm安裝eslint并手動(dòng)運(yùn)行相關(guān)指令進(jìn)行檢查。
jshint 配置文件.jshintrc
{
//
// 強(qiáng)制選項(xiàng)
//
// When set to true, these options will make JSHint produce more warnings about your code.
/**
* 是否阻止位運(yùn)算符的使用
*
* 有時(shí)候?yàn)榱丝焖偃≌蚺袛啵瑫?huì)使用一些位運(yùn)算符,所以此項(xiàng)設(shè)置為 false
*/
"bitwise": false,
/**
* 是否要求變量都使用駝峰命名
*
* 默認(rèn)開啟
* 棄用,見jscs項(xiàng)目
*/
"camelcase": true,
/**
* 是否要求 for/while/if 等循環(huán)和條件語(yǔ)句中總是使用花括號(hào)
*
*
*/
"curly": true,
/**
* 是否強(qiáng)制使用嚴(yán)格等號(hào)
*
* 有時(shí)候需要判斷 null,所以默認(rèn)不嚴(yán)格要求
*/
"eqeqeq": true,
/**
* true: 默認(rèn)要求所有函數(shù)運(yùn)行在ES5
* 棄用
*/
//"es3": true,
//"es5": true,
//"esnext": true,
/**
* 選擇ES版本,3,5,6
*
*/
"esversion": 5,
/**
* for-in 語(yǔ)句是否要求過濾原型鏈上的對(duì)象
* 添加 obj.hasOwnProperty(prop)
* 默認(rèn)打開
*/
"forin": true,
/**
* 是否阻止修改或拓展基本對(duì)象(Array、Date 等)的原型鏈
*
* 原型鏈污染比較危險(xiǎn),默認(rèn)打開
*/
"freeze": true,
/**
* 變量只能在函數(shù)域上定義,在代碼塊上定義的變量給出警告
*/
"funcscope": true,
/**
* 當(dāng)使用JS保留字時(shí),顯示警告
*/
"futurehostile": true,
/**
* 是否要求自執(zhí)行的方法使用括號(hào)括起 (function () { } ());
* 默認(rèn)打開
* 棄用,見jscs項(xiàng)目
*/
"immed": true,
/**
* 指定tab縮進(jìn)寬度為 2 個(gè)空格
*
* 棄用,見jscs項(xiàng)目
*/
"indent": 4,
/**
* 要求變量在使用前聲明,
*/
"latedef": true,
/**
* 代碼塊嵌套深度
*/
"maxdepth": 4,
/**
* 最大錯(cuò)誤提示數(shù)量,默認(rèn)50
*/
"maxerr": 10000,
/**
* 單行最大長(zhǎng)度
*
* 棄用,見jscs項(xiàng)目
*/
"maxlen": 200,
/**
* 設(shè)置函數(shù)正式參數(shù)的最大數(shù)量
*
*/
"maxparams": 20,
/**
* 一個(gè)函數(shù)內(nèi)聲明語(yǔ)句的最大數(shù)量
*
*/
"maxstatements": 1000,
/**
* 要求構(gòu)造函數(shù)大寫
*
* 棄用,見jscs項(xiàng)目
*/
"newcap": true,
/**
* 不允許使用 arguments.callee 和 arguments.caller
*/
"noarg": true,
/**
* 不允許使用逗號(hào)
*/
"nocomma": true,
/**
* 不允許空的代碼快,默認(rèn)關(guān)閉
*
* 棄用,見jscs項(xiàng)目
*/
"noempty": false,
/**
* 不允許使用 "non-breaking whitespace"。
*
* 這些字符在非 UTF8 頁(yè)面會(huì)導(dǎo)致代碼失效
*/
"nonbsp": true,
/**
* 阻止直接使用 new 調(diào)用構(gòu)造函數(shù)的語(yǔ)句(不賦值對(duì)象)
*
* // OK
* var a = new Animal();
*
* // Warn
* new Animal();
*/
"nonew": true,
/**
* 阻止直接使用 typeof 操作符
*
* 慎用
*/
"notypeof": false,
/**
* 字符串引號(hào)
*
* 默認(rèn)要求使用單引號(hào)
true-- 代碼字符串禁止單引號(hào)雙引號(hào)混用,
"single"--只允許單引號(hào)
"double"--只允許雙引號(hào)。
* 棄用,見jscs項(xiàng)目
*/
"quotmark": "single",
/**
* 隱藏式聲明
*
"inner" - check for variables defined in the same scope only
"outer" - check for variables defined in outer scopes as well
false - same as inner
true - allow variable shadowing
*/
"shadow": "inner",
/**
* 禁止在不必要的時(shí)候使用分組運(yùn)算符
*/
"singleGroups": true,
/**
* 是要求否以 strict 模式檢查
*
* 該選項(xiàng)要求文件有 "use strict;"不全局要求,需要的模塊自行開啟
*/
"strict": false,
/**
* 提示未定義的變量
*
* 未定義的變量會(huì)容易造成全局變量,該項(xiàng)開啟
*/
"undef": true,
/**
* 提示未使用的變量
* vars - to only check for variables, not function parameters
* strict - to check all variables and parameters.
* 默認(rèn)開啟
*/
"unused": true,
/**
* 是否禁止使用var
* Use `let` or `const` instead.
*/
"varstmt": false,
//
//Relaxing options
//
//When set to true, these options will make JSHint produce fewer warnings about your code.
/**
* 不顯示缺少分號(hào)警告
*/
"asi": false,
/**
* 不顯示在 比較處使用了賦值 的警告信息。
*/
"boss": true,
/**
* 不顯示代碼中使用的 debugger 語(yǔ)句默認(rèn)給出的警告
*/
"debug": false,
/**
* This option tells JSHint that your code uses ES3 array elision elements, or empty elements (for example, [1, , , 4, , , 7]).
*/
"elision": true,
/**
* 不顯示關(guān)于 == null的警告
* 當(dāng)您想要檢查變量是否為空或未定義時(shí),這種比較往往很有用。
*/
"eqnull": true,
/**
* 不顯示關(guān)于 eval 的警告
*
*/
"evil": true,
/**
* 不顯示 在應(yīng)該使用復(fù)制或函數(shù)調(diào)用的地方使用了表達(dá)式 的警告。
*/
"expr": true,
/**
* 不顯示缺少分號(hào)的警告
*/
"lastsemic": false,
/**
* 不顯示不安全的折行的警告
*
* 棄用,見jscs項(xiàng)目
*/
"laxbreak": true,
/**
* 不顯示逗號(hào)放前面的警告,例如:
*
* 棄用,見jscs項(xiàng)目
*/
"laxcomma": true,
/**
* 不顯示 在循環(huán)語(yǔ)句中定義函數(shù) 的警告
*/
"loopfunc": true,
/**
* 不顯示 多行字符串 的警告
*/
"multistr": true,
/**
* 不允許使用 ++ 和 -- 運(yùn)算符
*
* 默認(rèn)關(guān)閉
*/
"plusplus": false,
/**
* 禁止關(guān)于__proto__屬性的警告
*/
"proto": true,
/**
* true: Prohibit use of empty blocks
* 該選項(xiàng)控制形如 person['name'] vs. person.name的警告信息的顯示
* 棄用,見jscs項(xiàng)目
*/
"sub": true,
//
// Environments
//
// These options let JSHint know about some pre-defined global variables.
/**
* 暴露瀏覽器屬性的全局變量,列如 window,document;
注意:這個(gè)選項(xiàng)不暴露變量 alert或 console。
*/
"browser": true,
/**
* 這個(gè)選項(xiàng)定義全局暴露的jQuery庫(kù)。
*/
"jquery": true,
"devel": true,
/**
*這個(gè)選項(xiàng)可以用來指定一個(gè)沒有正式定義的全局變量的白名單。配置 globals在單個(gè)文件,看看內(nèi)聯(lián)配置.
*需要的引用到的js類庫(kù)的全局變量應(yīng)該加入進(jìn)來
*/
"globals": {
"define": true,
"module": true,
"export": true,
"console": true,
"THREE": true,
"TWEEN": true,
"Stats": true,
"wx": true,
"angular": true,
"mui": true,
"IDValidator": true
}
}