我正在通過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' –