理解 for in 循环 (javascript)

Understanding for in loop (javascript)

我对 JS 有点陌生,我想了解 for/in 循环的真正工作原理,这里有一些示例代码:

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

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

当我 运行 这段代码得到 bill 和 steve 作为输出时,我的问题是这是否是迭代器持有的内容,为什么我被允许做 phoneBook[obj] 并使用它?如果我手动输入 phoneBook[bill] 我得到一个错误,我只能 phoneBook.bill 或 phoneBook["bill"].

感谢您的帮助。

Javascript 对象只是键值对。

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

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

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

现在,phoneBook[bill]是无效的,因为JS认为bill是一个变量,并试图找到这个。这就是为什么您应该使用 phoneBook['bill']phoneBook["bill"]。您可以使用这种字典形式,但我建议您使用 phoneBook.bill 方法。

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

修复了一些语法错误

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 正在查找包含 string bill

你可以试试这个方法

var bill = 'bill';
phoneBook[bill]

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

phonebook[obj]的情况下,变量obj的值将是字符串"bill""steve",然后它会查找对应的属性.

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