配置文件中的"extends": "eslint:recommended"屬性啟用了此規(guī)則。
該規(guī)則禁止詞法聲明 (let润文、const油航、function和class) 出現(xiàn)在case或default子句中野建。原因是罗岖,詞法聲明在整個(gè)switch語句塊中是可見的,但是它只有在運(yùn)行到它定義的 case 語句時(shí)诅蝶,才會(huì)進(jìn)行初始化操作退个。
為了保證詞法聲明語句只在當(dāng)前 case 語句中有效募壕,將你子句包裹在塊中
Rule Details
該規(guī)則旨在避免訪問未經(jīng)初始化的詞法綁定以及跨 case 語句訪問被提升的函數(shù)。
錯(cuò)誤?代碼示例:
*eslint no-case-declarations: "error"*/
/*eslint-env es6*/
switch (foo) {
????case 1:
????????let x = 1;
????????break;
????case 2:
????????const y = 2;
????????break;
????case 3:
????????function f() {}
????????break;
????default: class C {}
}
正確?代碼示例:
/*eslint no-case-declarations: "error"*/
/*eslint-env es6*/
// Declarations outside switch-statements are valid
const a = 0;
switch (foo) {
// The following case clauses are wrapped into blocks using brackets
case 1: { let x = 1; break; }
case 2: { const y = 2; break; }
case 3: { function f() {} break; }
case 4:
// Declarations using var without brackets are valid due to function-scope hoisting
var z = 4; break;
default: { class C {} }
}
When Not To Use It
如果你依賴 case 落空行為语盈,并想訪問 case 塊中引入的綁定舱馅,可以關(guān)閉此規(guī)則。
該規(guī)則在 ESLint 1.9.0 中被引入刀荒。