2016-09-01 1 views
0

Je suis en train de lire un livre sur Javascript, j'ai une partie déroutante concernant les opérateurs de cession et de concaténation. S'il vous plaît voir ci-dessous le codeJavascript concaténer + et assigner + =?

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; 

Je reçois que l'opérateur +=, lorsqu'ils traitent avec des chaînes de concaténer les deux opérandes et lorsqu'ils traitent avec des chiffres qu'ils ajoutent les valeurs des opérandes et réaffecter à la valeur calculée à la première opérande.

Je reçois aussi que str est initialisé comme 'Add & assign string ' + msg; et ensuite ajouté avec une autre chaîne et une variable.

Mais pourquoi ne pas simplement écrire ci-dessous dans l'exemple de la variable str?

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

que je comprends mal une différence subtile entre + et + =, ou sont-ils la même chose dans ce cas d'utilisation?

+0

Ils sont exactement les mêmes. – Blackhole

+0

'foo + = bar' est juste du sucre syntaxique pour' foo = foo + bar' – Jecoms

+2

Non, vous ne vous méprenez pas. Votre code produit exactement la même chose que l'exemple de code. Je pense qu'ils essayaient juste d'illustrer différents moyens d'atteindre le même résultat. –

Répondre

3

Une expression comme

a += b 

est interprété (presque) exactement comme si elle avait été écrite

a = a + b 

exemples parvins expliquant les éléments de langage sont inventées, et ne reflètent pas nécessairement la pratique courante. (Ce serait bien s'ils le faisaient, mais créer des exemples de code est notoirement difficile.)

+0

J'ai écrit "(presque) exactement" parce que je suis naturellement prudent, mais après réflexion, je ne peux pas trouver un exemple où l'interprétation finirait par faire des choses différentes. – Pointy