版本

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 版本中引入。

延伸閱讀

資源

變更語言