【问题标题】:What is the default value of variable in for...of loop?for...of 循环中变量的默认值是多少?
【发布时间】:2020-07-30 16:37:26
【问题描述】:

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

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

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

据我所知,任何未声明的变量都是var 类型。是否适用于for循环变量?

【问题讨论】:

  • 是的,完全同意 :) @jfriend00 我只是对此感到好奇。
  • @jfriend00 我的意思是,let value = null; for (value of values) ; console.log('last:', value) 可以正常工作:-)
  • @Bergi - 是的,但这不是 OP 所要求的。他们询问是否使用未声明的变量。

标签: javascript ecmascript-6 for-of-loop


【解决方案1】:

没有默认值,但我猜你可以在松散模式下调用The Horror of Implicit Globals¹ 一种默认值。 :-) 不要依赖隐式全局变量的恐怖,它实际上是严格模式修复的语言中的一个错误。 :-)

如果您按照自己的方式编写代码,则必须在循环之前声明变量。如果不这样做,在松散模式下,将隐式创建全局 var;在严格模式下(我建议始终使用),这是一个错误。如果在循环之前声明变量,letvar(但不是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);
}

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

【讨论】:

    猜你喜欢
    • 2011-05-13
    • 2011-06-25
    • 2019-09-17
    • 1970-01-01
    • 2018-04-25
    • 2017-02-17
    • 2020-11-21
    • 2020-10-14
    相关资源
    最近更新 更多