eslint 规则强制变量在块的顶部声明?

Jos*_* M. 0 javascript ecmascript-6 eslint ecmascript-2016

是否有 eslint 规则强制变量在块的顶部声明?该vars-on-top规则似乎只适用于var关键字,而不是我想要的(例如,它不允许for (var i = 0; ...)。这是一个人为的示例。

错误代码

doWork() {
    const work = this.getWork();

    if (work.isReady) { ... }

    let workResult = work.getResult();

    // ...

    return workResult;
}
Run Code Online (Sandbox Code Playgroud)

好的代码

doWork() {
    const work = this.getWork();
    let workResult;

    if (work.isReady) { ... }

    workResult = work.getResult();

    // ...

    return workResult;
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*wer 5

我不知道这方面的规则。

var规则有一个非常重要的目的:防止您由于不明显的提升行为而意外引入错误var。该规则迫使你自己举起它们,使行为变得明显(如果仍然有人烦人的话)

随着这不再是一个问题let,因此强制执行这种行为的主要实际原因不再存在。在定义变量之前使用变量仍然可能是一个问题,但有一个规则可以处理这个问题(包括 for和)。const no-use-before-defineletconst