轉截自:https://blog.csdn.net/penwan/article/details/43452463
這個問題很好有人關注,但我每一次在聲明一個對象屬性的時候都要想想要不要給屬性加引號?加引號與不加引號有什麼區別?
其實在JavaScript中,加引號與不加引號都是一樣用,都是有效的。
如:
-
var obj = {
-
name : '瓊臺博客',
-
'age' : 18,
-
};
-
document.write( 'name : ' + obj['name'] + '<br />' );
-
document.write( 'age : ' + obj.age + '<br />' );
執行:
name : 瓊臺博客
age : 18
哪在什麼時候有區別呢?在你使用一些非合法命名規則的時候,就顯的有必要了
比如:
-
var obj = {
-
888name : '瓊臺博客'
-
};
-
document.write( '888name : ' + obj.888name + '<br />' );
這時候會報錯誤:
(原文)但你給加上引號,就沒事了
如果加上引號,使用 “.屬性名”: 方式讀取屬性時仍然會出錯:
-
var obj = {
-
'888name' : '瓊臺博客'
-
};
-
document.write( '888name : ' + obj.888name + '<br />' );
執行,發現報錯:
如果加上引號,使用 “[‘屬性名']”: 方式讀取屬性時不會出錯:
-
var obj = {
-
'888name': '瓊臺博客'
-
};
-
document.write('888name : ' + obj['888name'] +'<br />' );
執行:
888name : 瓊臺博客
甚至還可以更特殊一點,如:
-
var obj = {
-
'': '這個屬性名是空的',
-
' ': '這個屬性名是一個空格'
-
};
-
document.write( obj[''] +'<br />' );
-
document.write( obj[' '] +'<br />' );
執行:
這個屬性名是空的
這個屬性名是一個空格
我們引用對象成員的時候,由於屬性名不是合法命名規則,因此也需要使用中括號的方式來訪問,也建議大家以後採取中括號的方式讀取對象屬性值,以免有意外錯誤
雖然實際我們寫程序一般都遵守程序公約,不會去製造一些另類,但特殊性情況下,這些能力也可以彌補一些變態需求。