版本

block-scoped-var

强制在变量定义的作用域内使用变量

block-scoped-var 规则在变量在其定义的作用域之外使用时会生成警告。这模拟了 C 样式的作用域。

规则详细信息

此规则旨在减少在变量绑定上下文之外使用变量,并模拟其他语言中的传统块级作用域。这是为了帮助语言新手避免因变量提升而导致的难以解决的错误。

此规则的**错误**代码示例

在代码游乐场中打开
/*eslint block-scoped-var: "error"*/

function doIf() {
    if (true) {
        var build = true;
    }

    console.log(build);
}

function doIfElse() {
    if (true) {
        var build = true;
    } else {
        var build = false;
    }
}

function doTryCatch() {
    try {
        var build = 1;
    } catch (e) {
        var f = build;
    }
}

function doFor() {
    for (var x = 1; x < 10; x++) {
        var y = f(x);
    }
    console.log(y);
}

class C {
    static {
        if (something) {
            var build = true;
        }
        build = false;
    }
}

此规则的**正确**代码示例

在代码游乐场中打开
/*eslint block-scoped-var: "error"*/

function doIf() {
    var build;

    if (true) {
        build = true;
    }

    console.log(build);
}

function doIfElse() {
    var build;

    if (true) {
        build = true;
    } else {
        build = false;
    }
}

function doTryCatch() {
    var build;
    var f;

    try {
        build = 1;
    } catch (e) {
        f = build;
    }
}

function doFor() {
    for (var x = 1; x < 10; x++) {
        var y = f(x);
        console.log(y);
    }
}

class C {
    static {
        var build = false;
        if (something) {
            build = true;
        }
    }
}

版本

此规则是在 ESLint v0.1.0 中引入的。

进一步阅读

资源

更改语言