JS 赋值运算符
功能
赋值运算符(assignment operator)基于右值(right operand)的值,给左值(left operand)赋值。
演示
var x = 2;
var y = 3;
console.log(x);
// expected output: 2
console.log(x = y + 1); // 3 + 1
// expected output: 4
console.log(x = x * y); // 4 * 3
// expected output: 12
概述
基本的赋值运算符是等号(=),该运算符把它右边的运算值赋给左边。即,x = y 把 y 的值赋给 x。 其他的赋值运算符通常是标准运算符的简写形式,如下面的定义与示例。
名称 | 简写形式 | 含义 |
---|---|---|
赋值 | x = y | x = y |
加赋值 | x += y | x = x + y |
减赋值 | x -= y | x = x - y |
乘赋值 | x *= y | x = x * y |
除赋值 | x /= y | x = x / y |
模赋值 | x %= y | x = x % y |
指数赋值 | x **= y | x = x ** y |
左移赋值 | x «= y | x = x « y |
右移赋值 | x »= y | x = x » y |
无符号右移赋值 | x »>= y | x = x »> y |
按位与赋值 | x &= y | x = x & y |
按位异或赋值 | x ^= y | x = x ^ y |
按位或赋值 | x | = y |
解构
[a, b] = [1, 2]
{a, b} = {a:1, b:2}
解构分配使您可以使用类似于数组或对象文字的语法将数组或对象的属性分配给变量。
示例
带有赋值运算符的左值(Left operand)
在某些不常见的情况下,赋值运算符(如 x += y)并不等同于表达式( x = x + y)。
当一个赋值运算符的左值包含有一个赋值运算符时,左值只会被求值一次。例如:
a[i++] += 5 // i 执行一次求值
a[i++] = a[i++] + 5 // i 执行两次求值
规范
Specification | Status | Comment |
---|---|---|
ECMAScript Latest Draft (ECMA-262) Assignment operators |
Draft | |
ECMAScript 2015 (6th Edition, ECMA-262) Assignment operators |
Standard | |
ECMAScript 5.1 (ECMA-262) Assignment operators |
Standard | |
ECMAScript 1st Edition (ECMA-262) Assignment operators |
Standard | Initial definition. |