簡體   English   中英

JavaScript對象字面符號混淆

[英]JavaScript Object literal notation confusion

在Firefox控制台中,此代碼將生成錯誤:

{"d" : ["bankaccountnumber", "$1234.56"] } 
>   SyntaxError: invalid label {
> message="invalid label",  more...}

這段代碼工作得很好

{d : ["bankaccountnumber", "$1234.56"] } 
> ["bankaccountnumber", "$1234.56"]

此代碼也可以正常工作

var a = {'d' : ["bankaccountnumber", "$1234.56"] };
a.d
> ["bankaccountnumber", "$1234.56"]

有人可以幫助解釋為什么會有差異? 謝謝!

這是因為語法含糊不清。 當你嘗試在前兩行中創建一個普通的對象文字時,JavaScript實際上將它解釋為一組大括號,然后是一個標簽,然后是一個語句:

{
    d: ["bankaccountnumber", "$1234.56"]
}

此代碼不會評估對象,而只評估數組。 第一個示例,您嘗試使用字符串作為標簽,這是不正確的語法。 第三個示例正常工作,創建一個對象並將其存儲在a

它可能很難決定它是表達式還是塊。 如果在對象周圍使用括號,它會強制表達式。 分組運算符()強制將{}解析為對象文字。

({"d" : ["bankaccountnumber", "$1234.56"] }) // works

閱讀命名函數表達式揭秘 它與此問題沒有直接關系,但在討論使用分組括號和eval()時確實解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM