【问题标题】:I am confused with javascript let and var in for loop? [duplicate]我对 for 循环中的 javascript let 和 var 感到困惑? [复制]
【发布时间】:2017-03-23 23:27:14
【问题描述】:

这是我的循环代码

var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat'];
for(var i in username){
  console.log(username[i]);
}

它的输出与需要的相同,但我不确定为什么需要 Let 声明。我了解 VAR 和 LET 的概念,但不确定 var 在哪些情况下会在 for 循环中产生问题?

请任何人帮助我理解这个概念。我是新手,想弄清楚:)

感谢您的帮助。

【问题讨论】:

  • 该代码的问题不在于var,而在于您使用for..in 循环遍历数组which is a bad idea
  • 我只想知道 let 和 var 在任何 for 循环中的作用...你能给我举个例子吗?
  • 两者都不使用,选择Array.forEach
  • @RajatSharma 让在 for(in) {} 中创建块作用域,因此在 for(in) {} 循环之外,您无法获取 i 的值
  • 但是使用for .. in循环到数组是不好的用法。

标签: javascript for-loop scope var let


【解决方案1】:

当你使用var时:

var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat'];
for(var i in username){
  console.log(username[i]);
}
i // 3

当你使用let

var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat'];
for(let i in username){
  console.log(username[i]);
}
i // Uncaught ReferenceError: i is not defined

let 在 ES6 中将创建 块作用域到函数作用域

【讨论】:

  • letfor(in) {} 中创建块作用域,所以在for(in) {} 循环之外,无法获取i 的值。
  • 实际上,我正在研究“for 循环中的 var 问题”......带有闭包功能......这已经结束了 - 你能帮我解决这个话题......谢谢前进
  • 似乎没人在意,但它困扰着我,值得一提的是:for...in 不应该用于集合,它仅用于对象属性遍历,不保证遍历顺序。
  • @JesseRezaKhorasanee for in 始终需要与hasOwnProperty 一起使用。你的问题可以看这个:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • @tomioion @DaveEveritt 这很有趣,由于某种原因,此 Stack Overflow 页面上的 i 的值是 undefined。因此,如果您在此页面的检查器中进行测试,您将不会收到参考错误。将i 换成另一个变量名(a),你会得到错误。
猜你喜欢
  • 2016-07-13
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 2013-02-06
  • 2011-01-24
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多