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 }