首页 > 建站教程 > JS、jQ、TS >  Unexpected lexical declaration in case block no-case-declarations正文

Unexpected lexical declaration in case block no-case-declarations

vue3+eslint开发项目,写了下面的代码:

switch(type) {
  case 'addWaterMark':
    loadingMedias.value = true
    const ids = []
    imgList.value.forEach(item => {
      if(item.isChecked) ids.push(item.id)
    })
    console.log(ids)
    break
}


然后老是报错:

Unexpected lexical declaration in case block  no-case-declarations


这是case语法错误,但是找了半天也没找到问题所在,代码看着没问题啊,最后通过一行一行注释,发现是:

const ids = []


这行报错,在case里禁止词法声明 (let、const、function 和 class) 出现在 case或default 子句中。

几番实验后,其实归根结底是代码作用域的问题。


解决办法:要么将 const 改成 var,或者用花括号包裹起来:

switch(type) {
  case 'addWaterMark':
    {
      loadingMedias.value = true
      const ids = []
      imgList.value.forEach(item => {
        if(item.isChecked) ids.push(item.id)
      })
      console.log(ids)
    }
    break
}