2016-09-01 39 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