Unexpected lexical declaration in case block


問題描述

打開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
  }
}

備注

https://cn.eslint.org/docs/rules/no-case-declarations


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM