了解in循环(javascript)

时间:2015-12-24 04:34:25

标签: javascript iterator for-in-loop

我是JS的新手,我试图了解for / in循环是如何工作的,这里是一些示例代码:

phoneBook = {};
phoneBook.bill = { name : "bill", lastName "hayder" };
phoneBook.steve = { name : "steve", lastName "garcia" };

for ( obj in phoneBook )
{
    console.log(obj);
};

当我运行这段代码时,我得到账单和史蒂夫作为输出,我的问题是,如果这就是迭代器为什么我可以做phoneBook [obj]并使用它?如果我手动输入phoneBook [bill]我收到错误,我只能通过phoneBook.bill或phoneBook [“bill”]。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

Javascript对象只是键值对。

phoneBook = {};
phoneBook.bill = { name : "bill", lastName: "hayder" };
phoneBook.steve = { name : "steve", lastName: "garcia" };

在此示例中,phoneBook对象具有两个键值属性billsteve。但属性本身是对象,每个对象都包含属性namelastName

键值对可以通过两种方式访问​​:对象方式和字典方式。对象方式表示通过phoneBook.bill访问,字典方式表示通过phoneBook['bill']访问。请注意,使用字典方式意味着只需将属性名称传递给对象即可。

现在,phoneBook[bill]无效,因为JS认为该帐单是一个变量,并试图找到它。这就是您应该使用phoneBook['bill']phoneBook["bill"]的原因。您可以使用此词典表单,但我建议您使用phoneBook.bill方法。

我希望我回答你的问题。 :)

答案 1 :(得分:0)

修复了一些语法错误

phoneBook = {};
phoneBook.bill = { name: "bill", lastName: "hayder" };
phoneBook.steve = { name: "steve", lastName: "garcia" };

for (obj in phoneBook)
{
    console.log(obj);
};

Javascript基础

phoneBook有财产账单

在javascript中,可以使用

引用此属性账单
  • phoneBook.bill
  • phoneBook['bill']

当您引用phoneBook [bill]时,您将收到错误,因为javascript正在查找包含字符串 帐单

的变量

你能做的就是这样试试

var bill = 'bill';
phoneBook[bill]

答案 2 :(得分:0)

当你写phonebook[something]时,它意味着something应该是一个返回字符串的表达式,它应该找到名称就是该字符串的属性。

对于phonebook[obj],变量obj的值将是字符串"bill""steve",然后它会查找相应的属性。< / p>

如果你写phonebook[bill],它会尝试使用bill作为变量名,并期望它包含一个命名属性的字符串。但是没有名为bill的变量,因此会出错。