赋值运算符

可以将=右侧的值赋值给左侧的变量。

var a = 10;
var b = a;

自增运算

我们经常需要对一个变量做运算,并将新的结果存储在同一个变量中。

例如:

var n = 2;
n = n + 5;
n = n * 2;
n = n - 2;

可以使用运算符 +=*=-= 来缩写这种表示。

var n = 2;
n += 5; // 现在 n = 7(等同于 n = n + 5)
n *= 2; // 现在 n = 14(等同于 n = n * 2)
n -= 2; // 现在 n = 12 (等同于 n = n - 2;)
alert( n ); // 14

所有算术运算符都有简短的“修改并赋值”运算符:/=-= 等。

这类运算符的优先级与普通赋值运算符的优先级相同,所以它们在大多数其他运算之后执行:

let n = 2;

n *= 3 + 5;

alert( n ); // 16 (右边部分先被计算,等同于 n *= 8)

自增1和自减1

对一个数进行加一、减一是最常见的数学运算符之一。

所以,对此有一些专门的运算符:

  • 自增 ++ 将变量与 1 相加:
var counter = 2;
counter++;      // 和 counter = counter + 1 效果一样,但是更简洁
alert( counter ); // 3
  • 自减 -- 将变量与 1 相减:
var counter = 2;
counter--;      // 和 counter = counter - 1 效果一样,但是更简洁
alert( counter ); // 1

自增/自减只能应用于变量。试一下,将其应用于数值(比如 5++)则会报错。

补充

运算符 ++-- 可以置于变量前,也可以置于变量后。

  • 当运算符置于变量后,被称为“后置形式”:counter++
  • 当运算符置于变量前,被称为“前置形式”:++counter

两者都做同一件事:将变量 counter1 相加(实现counter的自增1)。

那么它们有区别吗?

为了直观看到区别,看下面的例子:

/**/
var counter = 1;
var a = ++counter;
// 前置形式 `++counter`,对 `counter` 做自增运算,返回的是新的值 `2`。因此 `alert` 显示的是 `2`。
alert(a); // 2
/**/
var counter = 1;
var a = counter++;
//后置形式 `counter++`,它同样对 `counter` 做加法,但是返回的是 **旧值**(做加法之前的值)。因此 `alert` 显示的是 `1`。
alert(a); // 1

总结:

如果只想对变量进行自增/自减操作,那么两者形式没有区别:

var counter = 0;
counter++;
++counter;
alert( counter ); // 2,以上两行作用相同
文档更新时间: 2022-03-28 17:26   作者:张老师