H5前端资料技术分享

VSCode编辑警告:unexpected lexical de

2020-01-16  本文已影响0人  JoanHale

配置文件中的"extends": "eslint:recommended"属性启用了此规则。

该规则禁止词法声明 (let、const、function和class) 出现在case或default子句中。原因是,词法声明在整个switch语句块中是可见的,但是它只有在运行到它定义的 case 语句时,才会进行初始化操作。

为了保证词法声明语句只在当前 case 语句中有效,将你子句包裹在块中

Rule Details

该规则旨在避免访问未经初始化的词法绑定以及跨 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 valid

const a = 0;

switch (foo) {

// The following case clauses are wrapped into blocks using brackets

case 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 hoisting

var z = 4; break;

default: { class C {} }

}

When Not To Use It

如果你依赖 case 落空行为,并想访问 case 块中引入的绑定,可以关闭此规则。

Related Rules

no-fallthrough

Version

该规则在 ESLint 1.9.0 中被引入。

Resources

Rule source

Documentation source

上一篇下一篇

猜你喜欢

热点阅读