我最近遇到了这段代码:
for (const temp of [1,2]) {
// do something
}
我认为最好使用let
声明,temp
因为这样变量只会被声明一次。但是,我也通过 babel 运行了这个示例以及版本,let
这就是我所看到的:
for (const p of [1,2]) {
}
for (let s of [1,2]) {
}
变成:
for (var _i = 0, _arr = [1, 2]; _i < _arr.length; _i++) {
var p = _arr[_i];
}
for (var _i2 = 0, _arr2 = [1, 2]; _i2 < _arr2.length; _i2++) {
var s = _arr2[_i2];
}
所以 babel 对待const
和let
相同。我想知道 Javascript 运行时是否在引擎盖下同样对待这 2 个版本。得出的结论是即使let
在循环内声明了一个变量,它仍然会在每次迭代时重新声明?