for .. in循环 - 为什么它有效?

时间:2016-10-13 22:01:43

标签: javascript for-loop

我正在阅读“网页设计师的JavaScript”这本书,我来到这个例子:

var fullName = {
  "first": "John",
  "last": "Smith"
};
for (var name in fullName) {
  console.log(name + ": " + fullName[name]);
}

输出结果为:

"first: John"
"last: Smith"

我不知道的是:我在哪里告诉程序获取字符串“first”和“last”。我的意思是,循环对象“fullName”,我没有看到“名称”如何与“第一”和“最后”相关。我希望这很清楚。  你能帮我吗?非常感谢!

5 个答案:

答案 0 :(得分:12)

for..in遍历对象的。然后,您可以访问对象值by name using brackets

var obj = {
  a: 1,
  b: 2,
  c: 3
};

for (var key in obj) {
  console.log('Key:', key);
  console.log('obj[key] == obj["' + key + '"] == obj.' + key);
  console.log('obj.' + key + ' == ' + obj[key]);
}

答案 1 :(得分:6)

学习和/或理解起来非常简单。您循环遍历对象fullName中的所有属性。对于每个媒体资源,您都会为其提供name

的临时名称/别名

因此,您可以将其更改为for (var anything in fullName),然后在for循环的正文中,您将通过名称anything引用每个属性,如下所示:

for (var anything in fullName) {

    // anything is an alias for the current property your on of the object you're looping through
    console.log(anything + ": " + fullName[anything]);

}

答案 2 :(得分:3)

for..in循环将遍历对象的键。如果你在一个数组上使用它,那么它(大多数浏览器引擎)会将数组转换为幕后的对象(在字典模式上阅读更多内容)并迭代键。

您可以使用

查看密钥

var fullName = {
  "first": "John",
  "last": "Smith"
};
console.log(Object.keys(fullName));

然后基本上迭代了这个调用的结果。请注意,使用for..in并不能保证键值对的顺序。

答案 3 :(得分:3)

上面的代码name中的

表示对象的键,

第一个和最后一个都是对象中的键。并可用于访问对象中的值。

像在循环的第一次运行中一样,它将是这样的

for("first" in fullName) {
 console.log("first" + ": " + fullName["first"] //John);
}

答案 4 :(得分:2)

循环访问对象时,会遍历键。此对象的键是firstlast。有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in