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