问题
for..of 循环中变量的默认类型是什么。
- for (value of [1,2,3]) // what is the default type of value
- console.log(value)
复制代码
我想知道 value 是否属于 var/let/const 类型。
据我所知,任何未声明的变量都是 var 类型。它适用于循环变量吗?
回答
没有默认值,尽管我想您可以将松散模式下隐式全局变量的恐怖称为默认值。 :-) 不要依赖隐式全局变量的可怕之处,它实际上是语言中的一个错误,由严格模式修复。 :-)
如果您以现有方式编写代码,则必须在循环之前声明变量。如果在松散模式下没有隐式创建全局变量;在严格模式下(我总是推荐)这是一个错误。如果变量是在循环之前声明的,那么 let 或 var (但不是 const )都可以工作。
如果您在循环中声明变量,则可以使用 let 或 const ,具体取决于您是否要更新循环中的变量(以及您喜欢的样式):
- 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);
- }
复制代码
|