for...of 循环中变量的默认值是多少?

Aks*_*nde 1 javascript ecmascript-6 for-of-loop

for..of 循环中变量的默认类型是什么。

for (value of [1,2,3]) // what is the default type of value
  console.log(value)
Run Code Online (Sandbox Code Playgroud)

我想知道value类型是否为 var/let/const。

据我所知,任何未声明的变量都是var. 它适用于 for 循环变量吗?

T.J*_*der 5

没有默认值,但我想你可以在松散模式下将隐式全局的恐怖¹ 称为一种默认值。:-) 不要依赖隐式全局变量的可怕之处,它实际上是严格模式修复的语言中的一个错误。:-)

如果按照现有方式编写代码,则必须在循环之前声明变量。如果不这样做,在松散模式下,将var隐式创建一个全局;在严格模式下(我建议一直使用),这是一个错误。如果您在循环之前声明变量,则letor var(但不是const)将起作用。

如果您循环中声明变量则可以使用letconst,具体取决于您是否要更新循环中的变量(以及您的首选样式):

const values = ["one", "two", "three"];

for (const value of values) {
    console.log(value);
}

for (let value of values) {
    console.log(value);
}

for (let value of values) {
    // (Note the following only changes the value of the variable, not the entry in the array)
    value = value.toUpperCase(); // You couldn't do thsi with `const`
    console.log(value);
}
Run Code Online (Sandbox Code Playgroud)


¹ (这是我的贫血,被忽视的博客上的帖子)