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