2015-12-24 40 views
-1

林還挺新的JS,我試圖瞭解如何for/in循環還真管用,這裏的一些示例代碼:理解爲在環(JavaScript)的

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

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

當我運行這段代碼,我得到的法案和史蒂夫作爲輸出,我的問題是,如果這就是迭代器認爲爲什麼我被允許做phoneBook [obj]並與之合作?如果我手動鍵入電話本[賬單],我收到一個錯誤,我只能打電話簿。電話簿或電話簿[「賬單」]。

感謝您的幫助。

+1

因爲'bill'作爲標識符是未定義的。 JS語法只允許'objectName [「property」]'或'objectName.property'。如果'bill'是一個字符串的變量,它會起作用。 'obj'就是這種情況 - 這是一個字符串。 – Xufox

+0

欲瞭解更多信息,您可以檢查如何在js中使用對象工作https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects – Tanmay

+0

Ref:[Property Accessors](https:// developer .mozilla.org/EN-US /文檔/網絡/的JavaScript /參考/運營/ Property_Accessors) –

回答

0

當你寫phonebook[something]這意味着something應該是一個expre ssion返回一個字符串,並且它應該找到名稱爲該字符串的屬性。

phonebook[obj]的情況下,可變obj的值將是字符串"bill""steve",然後它會查找相應的屬性。

如果您編寫phonebook[bill],它會嘗試使用bill作爲變量名稱,並期望它包含一個用於命名屬性的字符串。但是沒有名爲bill的變量,所以這會得到一個錯誤。

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認爲bill是一個變量,並試圖找到它。這就是爲什麼你應該使用phoneBook['bill']phoneBook["bill"]。您可以使用這種字典形式,但我建議您使用phoneBook.bill方法。

我希望我能回答你的問題。 :)

0

一些語法錯誤固定

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

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

的Javascript基礎

電話簿有一個屬性法案

在javascript中這個屬性的法案可以通過被引用

  • phoneBook.bill
  • phoneBook['bill']

當您參考電話簿[法案]您將收到一個錯誤,因爲JavaScript是尋找包含法案可變

你可以做的是嘗試這個方式

var bill = 'bill'; 
phoneBook[bill]