"extends": "eslint:recommended"配置文件中的属性启用此规则。
该规则禁止词法声明(let,const,function和class在)case/ default条款。原因是词法声明在整个开关块中是可见的,但只有在分配时才会被初始化,这只有在达到定义它的情况下才会发生。
要确保词法声明仅适用于当前case子句,请将子句包装在块中。
此规则旨在防止访问未初始化的词法绑定以及跨案例子句访问提升的函数。
此规则的错误代码示例:
/*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 validconst a = 0;switch (foo) {// The following case clauses are wrapped into blocks using bracketscase 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 hoistingvar z = 4;break;default: {class C {}}}
此规则在case中定义变量时,必须使用大括号{}
eslint使用注意事项
eslint环境变量设置
该规则禁止词法声明(`let`,`const`,`function`和`class`在)`case/ default`条款。原因是词法声明在整个开关块中是可见的,但只有在分配时才会被初始化,这只有在达到定义它的情况下才会发生。
如果您希望通过启用环境来允许一组全局变量,但仍希望禁止其中某些变量,则禁止使用特定的全局变量非常有用。 例如,早期的Internet Explorer版本将当前的DOM事件暴露为全局变量 event,但是长期以来,使用此变量一直被认为是一种不好的做法。限制此操作将确保在浏览器代码中不使用此变量。