【问题标题】:Why I got different result when using different `for loop` in javascript? [duplicate]为什么在javascript中使用不同的`for循环`时会得到不同的结果? [复制]
【发布时间】:2018-03-20 19:23:48
【问题描述】:

我对 js 中的for loop 有疑问,这里有例子:

在这部分,childobject(我想要的)。

for (var i = 0; i < element.childNodes.length; i++) {
        var child = element.childNodes[i];
        console.log(typeof(child));
}

但是当修改代码时,child变成String,值0, 1, 2 ...

for (var child in element.childNodes) {
        console.log(typeof(child));
}

为什么for loop这两种类型的结果不同? 谢谢..

【问题讨论】:

  • 第二个循环是遍历键。要获得类似的结果,您需要element.childNodes[child]
  • 因为for..in 循环迭代对象的可枚举键。喜欢for(var key in object) ...。你可能是说for(var child of element.childNodes) ...
  • 你应该使用of而不是in
  • 为什么你没有在第二个 sn-p 中也使用for (var i in element.childNodes) { var child = element.childNodes[i]; … } 模式?

标签: javascript


【解决方案1】:

for in 循环中,您检索密钥。以下应记录与您的第一个循环相同:

for (var child in element.childNodes) {
  console.log(typeof(element.childNodes[child]));
}

【讨论】:

    【解决方案2】:

    for...in 循环仅迭代可枚举的属性。”查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

    所述属性只是字符串,我认为它们是您对象中的键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多