为什么JavaScript const适用于in循环

时间:2017-10-25 12:41:14

标签: javascript variables ecmascript-6 for-in-loop

为什么JavaScript constlet循环中的for in相同? const用于在EC6中声明常量。那么为什么const num值会在for in的每次迭代中得到更新?

for in with

for (let num in nums) {
    console.log(num); // works well, as usual
}

for with with const

for (const num in nums) {
    console.log(num); // why const value getting replaced
}

3 个答案:

答案 0 :(得分:8)

  

为什么在const num的每次迭代中都会更新for in值?

它没有得到更新。 Similar to let,它的作用域是循环块,并在每次迭代时创建一个新的const变量,并使用相应的属性键进行初始化。

答案 1 :(得分:1)

  

为什么JavaScript const的工作方式与in in循环相同?

根据定义,const的范围限定为let

  

那么为什么const num值会在for的每次迭代中得到更新?

不是。因为它是块作用域,所以每次循环时,旧的常量都会超出范围而你会创建一个新的。

答案 2 :(得分:0)

可能(不确定)适用于其声明的范围。看来你在for语句的范围内声明了常量,所以它会被删除并重新声明每次新的迭代。所以每次它都有不同的价值。

这是猜测,不确定......