2017-06-14 38 views
0

我很努力地理解Javascript的增量操作符的行爲,更具體地說,爲什麼某些情況下失敗。參數兩側的JavaScript增量(++)運算符?

爲什麼在參數兩邊添加增量運算符失敗?

例:

let a = 1; 
++a++; 

這將返回一個可怕的錯誤,指出:

ReferenceError: Invalid left-hand side expression in prefix operation 

這是什麼意思,和我應該擔心嗎?

+4

你爲什麼用這個? – Derek

+0

由於++ a,您會收到此錯誤。正確的語法是一個++。我不確定你想用++來達到什麼目的。你能詳細說明一下嗎? – jonode

+1

我試圖想到這種情況下,這將是必要的或有用的,並且快來 – j08691

回答

8

遞增運算符用於變量而不是表達式。你不能增加一個數字表達式:

3++ // Uncaught ReferenceError: Invalid left-hand side expression in postfix operation 

這樣做的原因是,它必須增加值,然後保存回變量。如果你給它任何舊的數字表達式,它會將結果賦給什麼?

其中兩個運營商將工作的,但它返回操作中,它是一種表達,而不是一個變量的結果:

++(a++) 

第一個操作符,a++,將遞增a,並返回結果:2。第二個運算符然後試圖對值爲2執行增量,這是無效的語法。

+0

你的回答比我的好,但我會補充說'a ++'正在被執行(錯誤說「...在前綴操作」,而不是「...後綴操作」)。 –

+0

謝謝@JuanTonina,我不記得運營商的優先級 –

4

該代碼可以被重寫爲:++(a++)這將轉換爲++(1),然後++1,這不是一個有效的表達式。