我正在通过CodeCademy学习JavaScript,并在“联系人列表”项目中进行学习;具体来说,“搜索一个朋友”的教训。它让我学习对象如何工作以及如何看待对象。为什么以及这个“for..in”声明如何工作?
的证明代码如下:
var friends = {};
friends.bill = {
firstName: "Bill",
lastName: "Gates",
number: "(206) 555-5555",
address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve = {
firstName: "Steve",
lastName: "Jobs",
number: "(408) 555-5555",
address: ['1 Infinite Loop','Cupertino','CA','95014']
};
var list = function(obj) {
for(var prop in obj) {
console.log(prop);
}
};
var search = function(name) {
for(var prop in friends) {
if(friends[prop].firstName === name) {
console.log(friends[prop]);
return friends[prop];
}
}
};
list(friends);
search("Steve");
所以我明白friends
是一个对象和bill
和steve
是内friends
对象。我不明白list
和search
函数如何看friends
。我发现它使用了一个for/in
循环......但在学习循环之后,我看不到任何条件,并且我看不到任何迭代机制。我对这个for/in
如何实际工作没有任何概念。也许如果有人可以提供一个替代的等效语法;或许,甚至,如果有人可以用口语英语解释为什么/如何for/in
工作?
谢谢!
注意:标记为语言不可知的,因为它是一个更高级别的编程/概念问题,即使这里的语法是JavaScript。
你可以像'Object.keys(obj).forEach(...);'这相当于'for in'循环。 – plalx
所以你说的是在'for(var x in obj)'中,'x'对应于'a','b'等键?当我运行'for ... in'循环时,它会迭代并在每次迭代中分配'x = a','x = b'等等。 编辑:另外,'obj [x]'指的是键'a','b'等,并返回值('1','2'等)? – jwarner112
是的。当'x =='a'','obj [x] == obj ['a']',在例子中等于'1' –