JavaScript – Assignment Expressions

JavaScript uses the =
operator to assign a value to a variable or property. For
example:

i = 0           // Set the variable i to 0.
o.x = 1         // Set the property x of object o to 1.

The = operator expects its
left-side operand to be an lvalue: a variable or object property (or
array element). It expects its right-side operand to be an arbitrary
value of any type. The value of an assignment expression is the value
of the right-side operand. As a side effect, the = operator assigns the value on the right to
the variable or property on the left so that future references to the
variable or property evaluate to the value.

Although assignment expressions are usually quite simple, you
may sometimes see the value of an assignment expression used as part
of a larger expression. For example, you can assign and test a value
in the same expression with code like this:

(a = b) == 0

If you do this, be sure you are clear on the difference between
the = and == operators! Note that = has very low precedence and parentheses
are usually necessary when the value of an assignment is to be used in
a larger expression.

The assignment operator has right-to-left associativity, which
means that when multiple
assignment operators appear in an expression, they are evaluated from
right to left. Thus, you can write code like this to assign a single
value to multiple variables:

i = j = k = 0;       // Initialize 3 variables to 0

Assignment with Operation

Besides the normal =
assignment operator, JavaScript supports a number of other
assignment operators that provide shortcuts by combining assignment
with some other operation. For example, the += operator performs addition and
assignment. The following expression:

total += sales_tax

is equivalent to this one:

total = total + sales_tax

As you might expect, the +=
operator works for numbers or strings. For numeric operands, it
performs addition and assignment; for string operands, it performs
concatenation and assignment.

Similar operators include -=, *=,
&=, and so on. Table 4-2 lists them all.

Table 4-2. Assignment operators

Operator Example Equivalent
+= a += b a = a + b
-= a -= b a = a - b
*= a *= b a = a * b
/= a /= b a = a / b
%= a %= b a = a % b
<<= a <<=
b
a = a <<
b
>>= a >>=
b
a = a >>
b
>>>= a >>>=
b
a = a >>>
b
&= a &= b a = a &
b
|= a |= b a = a | b
^= a ^= b a = a ^ b

In most cases, the expression:

a op= b

where op is an operator, is
equivalent to the expression:

a = a op b

In the first line, the expression a is evaluated once. In the second it is
evaluated twice. The two cases will differ only if a includes side effects such as a function
call or an increment operator. The following two assignments, for
example, are not the same:

data[i++] *= 2;
data[i++] = data[i++] * 2;

Comments are closed.