我们写JavaScript for循环的时候,通常都是通过var定义索引值的,这个索引值在循环结束后依然可以访问。
而我们如果用let来定义循环的索引值的话,就不会出现这种情况。
for(var i = 0; i < 10; i++) { // ... } console.log(i); // 10
上述代码中,我们是用var来定义i的,循环结束后访问索引i的值,会输出10,这是最后一次执行i++后的值。
其实这样并不好,因为正常来讲,在for循环中,循环的索引值一般只会在循环体内有效,循环结束后索引值应该被回收才对。
解决办法就是通过let定义索引i,在这种情况下,循环体外访问i就会抛出异常。
for(let i = 0; i < 10; i++) { // ... } console.log(i); // ReferenceError: i is not defined