赋值运算符
简单的赋值操作符由等号'='表示,作用是把等号右边的值赋予等号左边的变量或属性。
i = o; o.x = 1; '='运算符希望它的左操作数是一个左值:一个变量或者对象属性(或数组元素)。它的右操作数可以是任意类型 的任意值。赋值表达式的值就是右操作数的值。
尽管赋值表达式通常非常简单,但有时仍会看到一些复杂表达式包含赋值表达式的情况。例如,可以将赋值 和关系操作符放在一个表达式中,就像这样: (a=b) == 0 如果这样做的话,应该清楚知道'='和'=='运算符之间的区别。'='具有非常低的优先级,通常在一个较长的 表达式中用到了一条赋值语句的值时的时候,需要补充圆括号以保证正确的运算顺序。 赋值操作符的结合性是从右到左。即,如果一个表达式中出现了多个赋值运算符,运算顺序是从右到左。 因此,可以通过如下方式来对多个变量赋值: i = j = k = 0; // 把三个变量初始化为0
JS还提供了11个复合的赋值运算符:先进行指定运算,然后将得到的值返回给左边的变量。
[注意]设计这些操作符的目的是简化赋值操作,使用它们并不会带来任何性能的提升。 total += sales_tax; //等价于 total = total + sales_tax; 运算符 示例 等价于 += 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 在大多数情况下,表达式为: a op= b 这里op代表一个运算符,这个表达式和下面的表达式等价: a = a op b 在第一行中,表达式a计算了一次,在第二行中,表达式a计算了两次,只有在a包含具有副作用的表达式 (比如函数调用和赋值操作)的时候,两者才不等价。 data[i++]*=2; data[i++] = data[i++]*2; var data = [0,1,2],i=0; data[++i]+=10; console.log(data);//[0,11,2] var data = [0,1,2],i=0; data[++i]= data[++i] + 10; console.log(data);//[0,12,2]