問題描述
打開eslint 在一個switch語句中定義了一個變量就報錯了
Unexpected lexical declaration in case block(no-case-declarations)
// 該規則禁止詞法聲明 (let、const、function 和 class) 出現在 case或default 子句中
問題解決
switch (1) {
case 1:
this.foo = 1
break
case 2:
this.foo = 2
const bar = 2 // 會報錯:Unexpected lexical declaration in case block
break
}
switch 邏輯沒有走到 case 1 的代碼塊,由於作用域提升,會導致case 1 影響到case 2,所以,eslint 會對這種情況做校驗,現在必須 使用花括號將代碼塊確定具體的作用域。
switch (1) {
case 1:
this.foo = 1
break
case 2: { // 加上一個作用域塊就好了
this.foo = 2
const bar = 2
break
}
}
