我正在通过 CodeCademy 学习 JavaScript,并且在“联系人列表”项目中;具体来说,“寻找 friend ”类(class)。它让我了解了对象的工作原理以及如何查看它们。
演示代码如下:
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
是如何工作的。也许如果有人可以提供等效语法的替代方法;也许,甚至,如果有人能用口语化的英语解释 why/how for/in
works?
谢谢!
注意:标记为与语言无关,因为这是一个更高级别的编程/概念问题,即使这里的语法是 JavaScript。
最佳答案
实际上并没有等效的替代语法; for (x in y)
是迭代机制。
它类似于
for ( x = 0; x < somearray.length; ++x )
因为它依次将 x
设置为每个索引。但由于 JS 对象根据定义是无序的,因此无法保证您将获得任何特定顺序的索引。
没有条件。你会达到每一个指数。这是一个不同的结构。
所以如果我们有:
var obj = { 'a': 1, 'b': 2, 'c': 3 };
然后说:
for ( var x in obj )
{
console.log( x + ": " + obj[x] ); // prints "a: 1", etc.
}
然后在那个循环中正好有一次,x
== "a"。恰好一次,x
== "b"。恰好一次,x
== "c"。只有那些,没有指定的顺序。
关于javascript - 这个 "for..in"语句为什么以及如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18538839/