no-lone-blocks
Disallow unnecessary nested blocks
在 JavaScript 中,在 ES6 之前,由大括号限定的独立代码块不会创建一个新的作用域,也没有任何用途。例如,这些大括号对 foo 没有任何作用。
{
    var foo = bar();
}
在 ES6 中,如果存在块级绑定(let 和 const)、类声明或函数声明(在严格模式下),代码块可以创建一个新的作用域。在这些情况下,一个块不被认为是多余的。
规则细节
这一规则旨在消除脚本顶层或其他区块内不必要的、可能引起混淆的区块。
使用此规则的错误示例:
                            
                                Open in Playground
                            
/*eslint no-lone-blocks: "error"*/
{}
if (foo) {
    bar();
    {
        baz();
    }
}
function bar() {
    {
        baz();
    }
}
{
    function foo() {}
}
{
    aLabel: {
    }
}
class C {
    static {
        {
            foo();
        }
    }
}
在 ES6 环境下,此规则的**正确的代码示例:
                            
                                Open in Playground
                            
/*eslint no-lone-blocks: "error"*/
/*eslint-env es6*/
while (foo) {
    bar();
}
if (foo) {
    if (bar) {
        baz();
    }
}
function bar() {
    baz();
}
{
    let x = 1;
}
{
    const y = 1;
}
{
    class Foo {}
}
aLabel: {
}
class C {
    static {
        lbl: {
            if (something) {
                break lbl;
            }
            foo();
        }
    }
}
在 ES6 环境和严格模式下,在 ESLint 配置中编写 "parserOptions": { "sourceType": "module" } 在在代码中使用 "use strict" 指令的正确示例:
                            
                                Open in Playground
                            
            /*eslint no-lone-blocks: "error"*/
/*eslint-env es6*/
"use strict";
{
    function foo() {}
}
Version
This rule was introduced in ESLint v0.4.0.