設定為 true 時,這些選項將讓 JSHint 產生更多有關您程式碼的警告。
位元運算 |
此選項禁止使用位元運算子,例如 |
駝峰式大小寫 |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 此選項可以強制所有變數名稱使用 駝峰式大小寫樣式或以底線分隔的大寫字母。 |
大括號 |
此選項需要您在迴圈和大括號條件中,始終將大括號放在方塊中。JavaScript 可讓您在方塊僅包含一個陳述式時,省略大括號,例如
然而,在某些情況下,可能會導致錯誤 (您可能會認為
|
全部執行 |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
此選項無法在不自動讓使用者選擇新功能的情況下維護。這可能會導致在升級 JSHint 的次要版本之間出現預期之外的警告/錯誤。 此選項在 JSHint 2.6.3 版本中,是大多數嚴格 JSHint 組態的簡寫。它會啟用所有的執行選項,並停用該版本中定義的所有放寬選項。 |
等值 |
此選項禁止使用 |
ES3 |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
請改用 此選項會告訴 JSHint 您的程式碼需要遵循 ECMAScript 3 規格。如果您需要在較舊的瀏覽器(例如 Internet Explorer 6/7/8/9)和其他舊式 JavaScript 環境中執行您的程式,請使用此選項。 |
ES5 |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
請改用 此選項會啟用 ECMAScript 5.1 規格 中首次定義的語法。這包括允許將保留關鍵字作為物件屬性。 |
ES 版本 |
此選項用於指定程式碼必須遵循的 ECMAScript 版本。它可以采用以下值之一
|
forin |
這個選項要求所有
若要更深入了解 JavaScript 中的 |
freeze |
這個選項禁止覆寫原生物件的原型,像是
|
futurehostile |
這個選項會啟用使用 JavaScript 未來版本定義的識別碼時發出警告。儘管在未實際作用的地方覆寫它們並不會造成影響,但此習慣會在將程式庫移轉到更新的程式語言版本時造成問題。 |
globals |
這個選項可以用來指定原始碼中未正式定義的全局變數白名單。這在與 將一項設定為 請參閱「環境」選項:一套可用於簡寫啟用在常見 JavaScript 環境中定義的全局變數的選項。 要在單一檔案中設定 |
immed |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 這個選項禁止使用立即函式呼叫,且不包覆它們在括弧內。包覆的括弧有助於讀取程式碼的人了解表達式是函式的結果,而不是函式本身。 |
indent |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 這個選項會為您的程式碼設定特定的 tab 寬度。 |
latedef |
這個選項禁止在變數定義之前使用它們。JavaScript 只有函式範圍,而且所有變數都會移動——或提升——到函式的最上面。這個行為可能導致非常可怕的程式錯誤,因此在變數明確定義後才使用它們才是較安全的做法。 將此選項設定為「nofunc」會允許忽略函式宣告。 若要更深入了解 JavaScript 中的範圍和提升,請閱讀 Ben Cherry 的 JavaScript 範圍和提升。 |
leanswitch |
這個選項禁止在
雖然像這樣的子句在技術上是有效的,但它們不會影響程式行為,而且可能表示錯誤的重構。 |
maxcomplexity |
這個選項讓您控制整個程式碼中的迴圈複雜度。迴圈複雜度測量程式碼原始碼中線性獨立路徑的數量。在維基百科中閱讀更多關於迴圈複雜度的資訊。 |
maxdepth |
這個選項讓您可以控制程式區塊的巢狀程度
|
maxerr |
此選項讓你設定 JSHint 產生錯誤的最大數目,在達到此數字後 JSHint 將停止運作。預設值為 50。 |
maxlen |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 此選項讓你設定程式碼中單一行的最大長度。 |
maxparams |
此選項讓你設定每個函式允許的最大正式參數字數
|
maxstatements |
此選項讓你設定每個函式允許的最大陳述數字數
|
newcap |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 此選項要求你將建構函數的名稱開頭字母大寫。依慣例會將預期會使用 `new` 運算子的函式開頭字母大寫,這可協助程式設計師以視覺方式將建構函數和其它類型的函式做區分,進而協助在使用 `this` 時找到錯誤。 這麼做不會在任何瀏覽器或環境中導致程式碼中斷,不過在讀取程式碼時會有點難辨別這個函式是要使用 `new` 還是不使用 `new`。這是很重要的,因為當預期會使用 `new` 的函式未經使用 `new` 執行時,`this` 會指向全域物件,而不是指向新的物件。 |
noarg |
此選項禁止使用 `arguments.caller` 和 `arguments.callee`。`.caller` 和 `.callee` 會讓許多最佳化變得不可能,因此在未來版本中的 JavaScript 已經不建議使用。事實上,ECMAScript 5 在嚴謹模式下禁止使用 `arguments.callee`。 |
nocomma |
此選項禁止使用逗點運算子。當使用不當時,逗點運算子可能會模糊陳述式的值並提升錯誤程式的可能性。 |
noempty |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 此選項會在你的程式碼中出現空區塊時發出警告。JSLint 最初會對所有空區塊發出警告,而我們只是讓這個功能變成選配。目前還沒有任何研究報告指出 JavaScript 中的空區塊會讓你的程式碼中斷。 |
nonbsp |
此選項會對「非斷行空白」字元發出警告。這些字元可以在 Mac 電腦上使用 Option+空白鍵輸入,而且有潛力破壞非 UTF8 網頁。 |
nonew |
此選項禁止將建構函式用於副作用。有些使用者喜歡在未將其結果指派給任何變數的情況下呼叫建構函式。
與直接呼叫 `MyConstructor` 相比,這種方式沒有任何優點,因為運算子 `new` 建立的物件並未用於任何地方,因此你通常應該避免使用像這樣的建構函式。 |
noreturnawait |
非同步函式會在其回傳值上解析。在大多數情況下,這會讓回傳 AwaitExpression 的結果(本身就是 Promise 執行個體)變得沒有必要。為了清楚起見,通常比較偏好直接回傳非同步作業的結果。值得注意的例外是出現在 TryStatement 的 `try` 子句中——如需更多詳細資訊,請參閱「await 與 return vs. return await」 https://jakearchibald.com/2017/await-vs-return-vs-return-await/ |
predef |
此選項讓你控制 JSHint 認為環境中隱含定義哪些變數。使用字串值的陣列來設定它。在變數名稱前加上連字號 (-) 字元,即可從預先定義的變數集合中移除該名稱。 JSHint 會將使用此方式宣告的變數視為唯讀。 此選項無法內嵌指定;只能透過 JavaScript API 或外部設定檔使用。 |
quotmark |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 此選項強制執行你的程式碼中使用的引號的一致性。它接受三個值:如果你不想要強制執行一種特定的樣式,但想要一些一致性,則為 `true`;如果你只想允許單引號,則為 |
regexpu |
此選項會針對未包含「u」旗標的常規表示式發出警告。" u" 旗標可擴充對 Unicode 的支援範圍,同時也啟用更嚴格的解析規則。即使 JSHint 是在不支援「u」旗標的 JavaScript 引擎中執行,它仍然會強制執行這些規則。 |
shadow |
此選項省略會覆寫變數的警告,例如在外部範圍中宣告一個已宣告的變數。
|
singleGroups |
此選項禁止使用分組運算子,除非絕對需要。此類使用方式通常反映對一元運算子的誤解,例如
|
strict |
此選項必須在 ECMAScript 5 的嚴謹模式中執行程式碼。嚴謹模式是一種選擇 JavaScript 受限變體的方式。嚴謹模式消除一些 JavaScript 陷阱,這些陷阱不會產生錯誤,而是將其變更為產生錯誤。它也修復了讓 JavaScript 引擎難以執行特定最佳化的錯誤。
|
trailingcomma |
此選項會在陣列或物件字面值中的最後一個元素之後未加上逗號時發出警告。由於舊版 IE 的錯誤,不再鼓勵使用拖曳逗號,但自 ES5 以來,它們的語意已標準化。(請參閱 #11.1.4 和 #11.1.5。)現在,它們有助於預防與嚴謹使用分號類似的 視覺模糊性。 例如,以下程式碼上星期二可以執行
但如果有人在陣列中新增一個元素,卻忘記補上遺漏的逗號,將不會產生任何語法錯誤,掃描程式也無法判斷這是一個錯誤,還是故意的函數呼叫。
如果在項目清單後總附加上逗號,這個歧義就不會發生了
|
undef |
此選項禁止使用未宣告的變數。此選項非常適用於發現外洩和輸入錯誤的變數。
如果您的變數是在其他檔案中定義的,您可以使用指令碼 |
unused |
此選項會在您定義和從未使用您的變數時發出警告。它對於一般的程式碼清理非常有用,特別是在與
此外,此選項將警告您關於透過指令碼 設定為 |
varstmt |
設定為 true 時,禁止使用變數陳述。例如
|
設定為 true 時,這些選項將使 JSHint 對您的程式碼產生較少的警告。
asi |
此選項省略有關遺漏分號的警告。社區中有很多人散布分號關於分號的錯誤觀念。常見的迷思是始終需要分號(事實上並非如此),而且它們不可靠。JavaScript 有關於分號的規則,所有 瀏覽器都遵循這些規則,因此您可以自行決定是否在程式碼中使用分號。 有關 JavaScript 中分號的更詳細資訊,請閱讀 Isaac Schlueter 的 公開信給 JavaScript 負責人關於分號,以及 JavaScript 分號插入。 |
boss |
這個選項會抑制對在需要比較的狀況下使用指定作業的警告。更常見的是,像「if (a = 10) {}」這樣的程式碼是錯字。然而,在像這樣的情況下是有用的
你可以透過將指定作業加上括號來讓這類錯誤在每次使用時保持安靜,例如
|
debug |
這個選項會抑制對你的程式碼中「debugger」陳述式的警告。 |
elision |
這個選項會告訴 JSHint 你的程式碼使用 ES3 陣列省略元素,或空元素 (例如: |
eqnull |
這個選項會抑制對「== null」比較運算的警告。當你想檢查變數是否為「null」或「undefined」時,這種比較運算通常是有用的。 |
esnext |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
改用「esversion: 6」。 這個選項會告訴 JSHint 你的程式碼使用 ECMAScript 6 特有的語法。請注意,並非所有瀏覽器都實作這些功能。 更多資訊 |
evil |
這個選項會抑制對使用「eval」的警告。我們不建議使用「eval」,因為它可能會讓你的程式碼容易受到各種注入式攻擊,而且會讓 JavaScript 詮釋器難以進行某些最佳化。 |
expr |
這個選項會抑制對使用表達式的警告,在這些情況下你通常會希望看到指定作業或函式呼叫。這種程式碼大多數時候是錯字。然而,這不是規格禁止的,這就是為何這個警告是「可選擇的」。 |
funcscope |
這個選項會抑制對在控制結構中宣告變數,但之後會從結構外部存取這些變數的警告。儘管使用「var」宣告的識別項有兩個實質範圍 (全域和函式),但這種作法會讓新手混淆,而且會造成難以除錯的錯誤。這就是為何預設情況下,JSHint 會警告未來在預計範圍外使用的變數。
|
globalstrict |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
使用「strict: \"global\"」。 這個選項會抑制對使用全域嚴格模式的警告。全域嚴格模式可能會中斷第三方小工具,因此不建議使用。 如需有關嚴格模式的更多資訊,請見「strict」選項。 |
iterator |
這個選項會抑制對「__iterator__」屬性的警告。並非所有瀏覽器都支援這個屬性,所以請小心使用。 |
lastsemic |
這個選項會抑制對遺漏分號的警告,但僅限於一行程式碼區塊中最後一個陳述式省略分號時
這是一個非常特殊的用例,只有在使用自動 JavaScript 程式碼產生器時才有用。 |
laxbreak |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 這個選項會抑制對你的程式碼中可能不安全的換行的大部分警告。它不會抑制對逗號在前編碼風格的警告。如要抑制這些警告,你必須使用「laxcomma」(見下方)。 |
laxcomma |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 這個選項會抑制對逗號在前編碼風格的警告
|
loopfunc |
這個選項會抑制對迴圈中的函式的警告。在迴圈中定義函式可能會導致錯誤,如下所示
如要修復上述程式碼,你需要複製「i」的值
|
moz |
這個選項會告訴 JSHint 你的程式碼使用 Mozilla JavaScript 擴充套件。除非你專門為 Firefox 網路瀏覽器開發,否則你不需要這個選項。 更多資訊 |
multistr |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 這個選項會抑制對多行字串的警告。多行字串在 JavaScript 中可能是危險的,因為如果你不小心在跳脫字元(「\」)和新行之間加入空白字元,就會造成嚴重問題。 請注意,儘管這個選項允許正確的多行字串,但它仍然會警告沒有跳脫字元的多行字串,或在跳脫字元和空白字元之間有任何字元的多行字串。
|
notypeof |
此選項會取消顯示類似於找不到運算式
除非您確定不想要這些檢查,否則不要使用此選項。 |
noyield |
此選項會取消顯示未提供 |
plusplus |
此選項禁止使用單元遞增和遞減運算式。有些人認為 |
proto |
此選項會取消顯示 |
scripturl |
此選項會取消顯示使用腳本目標網址(例如 |
sub |
警告 此選項已標記為不建議使用,並會在 JSHint 下一個主要版本的移除。
JSHint 將其範圍限制在程式碼正確性的問題上。如果您想要執行與程式碼樣式相關的規則,請查看 JSCS 專案。 此選項會取消顯示使用 |
supernew |
此選項會取消顯示針對「奇怪」寫法(例如
|
validthis |
此選項會取消顯示針對在嚴格模式下執行程式碼時可能會遇到的嚴格違反情況(並在非建構函式中使用 注意:此選項僅能用於函式範圍內。如果您嘗試在全域設定此選項,JSHint 會傳回錯誤。 |
withstmt |
此選項會取消顯示使用 更多資訊 |
這些選項讓 JSHint 得以了解預先定義的某些全域變數。
browser |
此選項定義新式瀏覽器提供的全域參數:從老古董的 注意:此選項並不會顯示 |
browserify |
此選項定義使用 Browserify 工具 來建構專案時可用的全域參數。 |
couch |
此選項定義 CouchDB 提供的全域參數。CouchDB 是一個文件導向資料庫,可以使用 JavaScript 的 MapReduce 方式進行查詢和索引。 |
devel |
此選項定義通常用來進行除錯記錄的全域參數: |
dojo |
此選項定義 Dojo Toolkit 提供的全域參數。 |
jasmine |
此選項定義 Jasmine 單元測試架構 提供的全域參數。 |
jquery |
此選項定義 jQuery JavaScript 函式庫提供全域參數。 |
mocha |
此選項定義 Mocha 單元測試架構 的「BDD」和「TDD」使用者介面提供全域參數。 |
module |
此選項告知 JSHint 輸入程式碼描述 ECMAScript 6 模組。所有模組程式碼會視為嚴格模式程式碼。 |
mootools |
此選項定義 MooTools JavaScript 框架提供全域參數。 |
node |
此選項定義您的程式碼在 Node 執行時期環境中執行的可用全域變數。 Node.js 是一個伺服器端的 JavaScript 環境,採用非同步事件驅動模型。此選項也略過一些在瀏覽器環境中有意義,但在 Node 中沒有意義的警告,例如檔案層級的 |
非標準 |
此選項定義廣泛採用的非標準全域變數,例如 |
phantom |
此選項定義您的核心在 PhantomJS 執行時期環境中執行的可用全域變數。 PhantomJS 是一個無頭的 WebKit,具有 JavaScript API。它對各種ウェブ標準提供快速且原生的支援:DOM 處理、CSS 選擇器、JSON、畫布和 SVG。 |
prototypejs |
此選項定義 Prototype JavaScript 框架公開的全域變數。 |
qunit |
此選項定義 QUnit 單元測試框架 公開的全域變數。 |
rhino |
此選項定義您的程式碼在 Rhino 執行時期環境中執行的可用全域變數。 Rhino 是完全以 Java 撰寫的 JavaScript 開源實作。 |
shelljs |
此選項定義 ShellJS 函式庫 公開的全域變數。 |
typed |
此選項定義型別化陣列建構函式の全域變數。 更多資訊 |
worker |
此選項定義您的程式碼在 Web Worker 內執行的可用全域變數。 Web Worker 提供一個簡單的方法,讓ウェブ內容可以在背景執行緒中執行指令碼。 |
wsh |
此選項定義您的程式碼做為 Windows Script 主機 的指令碼執行的可用全域變數。 |
yui |
此選項定義 YUI JavaScript 框架公開的全域變數。 |
這些選項啟用主版本 JSHint 間變更的行為。在自動環境中啟用時請小心(連續整合)。
exports.unstable = { }; // 這些是與 JSLint 共用 JSHint 布林選項 // JSHint 中的定義與 JSLint 相反 exports.inverted = {bitwise |
不穩定的選項允許控制 JavaScript 語言中所提出之增加功能的剖析和整理。如同它們所描述的語言功能,這些選項的存在和行為是易變的;JSHint 保留移除或在主要版本發布之間修改它們的權利。 |