Menu Close

javascript基本运算符 – 自增和自减运算符

有时候,你需要反复把一个变量加 1 或减 1。这可以方便地使用增量(++)和递减( --运算符来完成。

javascript基本运算符 - 自增和自减运算符
javascript基本运算符 – 自增和自减运算符

你不能将自增和自减运算符直接应用于一个数字,只能为变量赋值一个新的更新值,而不是对该值进行操作。以下将返回错误:

3++;   //错误

你只能增加一个现有的变量。

增加或减少一个数字 1 是最常见的数值操作之一。

因此,有专门的运算符来处理:

  • 自增运算符 ++ 将变量增加 1:

    let counter = 2;
    counter++;        // works the same as counter = counter + 1, but is shorter
    alert( counter ); // 3

自减运算符 -- 将变量减少 1:

let counter = 2;
counter--;        // works the same as counter = counter - 1, but is shorter
alert( counter ); // 1

自增运算符 ++ 和自减运算符 -- 可以放在变量的前面或后面。

  • 运算符位于变量后面时,它是“后缀形式”:counter++

  • “前缀形式”是当运算符位于变量前面:++counter

这两个语句执行的是相同的操作:将 counter 增加 1。

有区别吗? 有,但只有在我们使用 ++-- 返回的值时才能看出来。

我们来澄清一下。正如我们知道的,所有运算符都会返回一个值,自增/自减也不例外。前缀形式返回新的值,而后缀形式返回旧的值(自增/自减之前的值)。

为了看到这个区别,下面是一个示例:

let counter = 1;
let a = ++counter; // (*)

alert(a); // 2

在行(*)中,前缀形式 ++countercounter 增加 1,并返回新的值 2。所以,alert 显示的是 2。

现在,使用后缀形式:

let counter = 1;
let a = counter++; // (*) changed ++counter to counter++

alert(a); // 1

在行(*)中,后缀形式 counter++ 也会将 counter 增加 1,但返回的是旧的值(自增之前的值)。因此,alert 显示的是 1。

总结:

  • 如果自增/自减的结果没有被使用,那么使用哪种形式是没有区别的:

let counter = 0;
counter++;
++counter;
alert( counter ); // 2, the lines above did the same
  • 如果我们想增加一个值并立即使用运算符的结果,那么需要使用前缀形式:
let counter = 0;
alert( ++counter ); // 1
  • 如果我们想增加一个值,但使用它的前一个值,那么需要使用后缀形式:
let counter = 0;
alert( counter++ ); // 0

自增/自减与其他运算符一起使用

自增运算符 ++ 和自减运算符 -- 也可以在表达式中使用。它们的优先级高于大多数其他算术运算。

例如:

let counter = 1;
alert( 2 * ++counter ); // 4

与此对比:

let counter = 1;
alert( 2 * counter++ ); // 2, because counter++ returns the "old" value

虽然从技术上来说是可以的,但这种写法通常会使代码变得不那么易读。一行代码做了多个操作——这不好。

在阅读代码时,快速的“纵向”浏览可能会忽略像 counter++ 这样的内容,且不容易发现变量已经增加。

我们建议采用“一行代码 – 一项操作”的风格:

let counter = 1;
alert( 2 * counter );
counter++;

 

READ  Javascript 代码结构
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!
Posted in JavaScript 基础

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!