2016-09-01 37 views
0

我正在閱讀一本關於Javascript的書我有一個關於賦值運算符和並置的混淆部分。請看下面的代碼Javascript concatenate +並賦值+ =?

var msg = 'JavaScript'; msg += ' Code'; //Concatenate 
var intA = 8; intA -= 4; //Subtract and assign 
var intB = 24; intB *= intA; //Multiply and assign 

var str = 'Add & assign string: ' + msg; 
    str += '<br>Multiply & assign: ' + initB; 

我得到了+=操作,用繩子打交道時地連接了兩個操作數和與數字打交道時,他們添加操作數的值,並重新分配給計算的值第一個操作數。

我還得到str正在初始化爲'Add & assign string ' + msg;,然後附加了另一個字符串和一個變量。

但是,爲什麼不只是在str變量的例子中寫下面的內容呢?

var str = 'Add & assign string ' + msg + '<br>Multiply & assign: ' + initB; 

我誤解了+和+ =之間的細微差別,還是它們在這個用例中是相同的東西?

+0

它們完全相同。 – Blackhole

+0

'foo + = bar'只是'foo = foo + bar'的句法糖 – Jecoms

+2

不,你不會誤解。你的代碼的確產生與示例代碼完全相同的東西。我認爲他們只是試圖說明取得同樣結果的不同方法。 –

回答

3

a += b 

的表達被解釋(幾乎)完全一樣,如果它被寫入

a = a + b 

解釋語言構造做作實例是做作,並且不一定反映常見的做法。 (如果他們這樣做會很好,但創建代碼示例非常困難。)

+0

我之所以寫「(幾乎)」是因爲我自然謹慎,但經過一番思考,我無法想出一個解釋什麼時候會做出不同事情的例子。 – Pointy