首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript for/in 循環:為什麼 person[x] 能取值,person.x 卻返回 undefined?

     編輯:程式設計綜合問答

問題場景

在學習 JavaScript 物件屬性遍歷時,經常會遇到這樣一段代碼:

var person = {fname: "John", lname: "Doe", age: 25};
var txt = "";
for (var x in person) {
    txt = txt + person[x];
}

這裡 person[x] 可以正確讀取到屬性值,但如果改寫成 person.x,結果卻變成 undefinedundefinedundefined。這究竟是為什麼?

核心差異:括號語法 vs. 點語法

  • 括號語法 person[x]:x 是一個變量,循環時依次取值 "fname"、"lname"、"age",相當於動態訪問 person["fname"] 等,因此能正確拿到屬性值。
  • 點語法 person.x:JavaScript 會直接尋找名為 "x" 的字面屬性,而非變量 x 的值。物件裡並沒有叫 x 的屬性,所以返回 undefined,拼接三次後就變成 undefinedundefinedundefined。

總結

點語法只能用於已知的固定屬性名;需要動態屬性名時,必須用括號語法。這是 JavaScript 物件屬性訪問的基本規則,掌握它能避免許多低級錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved