循环中的块级绑定

开发者最需要使用变量的块级作用域的场景,或许就是在for循环内,也就是想让一次性的 循环计数器仅能在循环内部使用。例如,以下代码在JS中并不罕见

for (var i = 0; i < 10 ; i ++){
    process(items[i]);
}

//i在此处依旧可以被访问到
console.log(i);       //10

在其他默认使用块级作用域的语言中,这个例子能够照预期工作,也就是只有for才能访问 变量i。然而在JS中,循环结束后i仍然可被访问,因为var声明导致了变量提升。 若像如下代码那样换为使用let,则会看到预期行为:

for (let i = 0; i <10 ; i ++){
    process(items[i]);
}

//i在此处不可以被访问到,抛出错误
console.log(i);

本例中的变量i仅在for循环内部可用,一旦循环结束,该变量在任意位置都不可访问。

results matching ""

    No results matching ""