我打犀牛,發現在這似乎是運算符優先級這種奇怪的行爲:的Javascript優先
js> {}+{}
NaN
js> ''+{}+{}
[object Object][object Object]
js> ''+({}+{})
[object Object][object Object]
我希望表達''+({}+{})
,以評估"NaN"
,因爲{}+{}
應先評估,但這不會發生。我在V8和Firefox中測試了這一點,並得到了相同的結果。
爲什麼在這種情況下Javascript不遵循給定括號的標準優先級(4*(1+2)
仍然是預期的12
)?
console.log({} + {}); [object Object] [object Object] – 2012-07-09 07:48:15
@Sudhir是的,因爲括在括號內意味着它是一個表達式而不是一個聲明。 – Alnitak 2012-07-09 07:49:01
@Annitak感謝您的澄清,沒有認爲我的那個 – 2012-07-09 07:50:24