用let重新分配javascript

uns*_*ska 6 javascript ecmascript-6

下面介绍的两种方式之间有什么区别吗?我应该使用哪一个原因?

while (true) {
    let test = getValue();
    ....
}
Run Code Online (Sandbox Code Playgroud)

let test;
while (true) {
    test = getValue();
    ....
}
Run Code Online (Sandbox Code Playgroud)

klu*_*gjo 8

let块范围的,这意味着它只存在于一个{...}块中.

您应该使用此表单(请注意,let如果您不在同一块中修改值,则不必在此处)如果您只test在块内使用(而不是在外部).

while (true) {
    const test = getValue();
    ....
}
Run Code Online (Sandbox Code Playgroud)

如果需要testwhile循环外部访问,则应使用此表单.

let test;
while (true) {
    test = getValue();
    ....
}
Run Code Online (Sandbox Code Playgroud)