Skip to content
← Back to rules

eslint/no-case-declarations 严格检查

An auto-fix is available for this rule.

作用

禁止在 case 子句中使用词法声明。

为什么这是问题?

原因是词法声明在整个 switch 块内都可见,但它仅在被赋值时才进行初始化,而这种情况只有在定义它的 case 分支被执行时才会发生。

示例

此规则的错误代码示例:

javascript
switch (foo) {
  case 1:
    let x = 1;
    break;
  case 2:
    const y = 2;
    break;
  case 3:
    function f() {}
    break;
  default:
    class C {}
}

此规则的正确代码示例:

javascript
switch (foo) {
  case 1: {
    let x = 1;
    break;
  }
  case 2: {
    const y = 2;
    break;
  }
  case 3: {
    function f() {}
    break;
  }
  default: {
    class C {}
  }
}

如何使用

通过配置文件或 CLI 启用此规则,可以使用:

json
{
  "rules": {
    "no-case-declarations": "error"
  }
}
bash
oxlint --deny no-case-declarations

参考资料