原文地址:https://www.jianshu.com/p/6a76530e4f8f
今天在寫js的過程中遇到這么一個問題,取一個對象的屬性值,通過obj.keys怎么都取不出來,但是用obj[keys]就可以。(這個是模擬的數據)

后來通過查資料明白,我這里data.water輸出undefined,是因為object使用(.)獲取屬性值時,這里的water不是使用的變量water,而是直接去data對象中尋找名為water的key,沒有找到,所以報undefined。
區別:
相同點:都可以獲取到obj的屬性值
不同點:
1 [ ]運算符可以使用字符串變量的內容作為屬性名,點運算符不能
2 [ ]運算符可以用純數字作為屬性名,點運算符不能
3 [ ]運算符可以用js關鍵字和保留字作為屬性名,點運算符不能
eg:
1 [ ]運算符可以使用字符串變量的內容作為屬性名,點運算符不能

這里由於變量的var聲明的變量會導致變量提升,所以會報undefined
2 [ ]運算符可以用純數字作為屬性名,點運算符不能

總結:對於一般的常量就使用(.)運算符,對於其他的使用[ ]運算符。