js递增和递减

    JavaScript中的递增和递减运算符都是一元操作符,言外之意就是只能操作一个值的操作符。递增和递减操作符直接借鉴自C语言,各有两种版本:前置型(递增++i,递减–i)和后置型(递增i++,递减i–)。在JavaScript中,递增(递减)的前置和后置运算符对于初学者都非常容易混淆。

前置型递增(递减)

前置型递增也称之为前增量(pre-increment)运算符,它对操作数进行增量计算,并返回其计算后的值。这样或许不太好理解,换过一种方式来理解:前增量指的先计算,后赋值。
例如:

var i = 1;
console.log(i); // => 1++i;
console.log(i); // => 2

这个示例,前置递增++i操作符把i的值变成了2(也就是1+1)。实际上,执行前置递增++i和执行下面的表达式效果相同:

var i = 1;
i = i + 1;
console.log(i); // => 2

简单点讲:前置型递增就是先自身计算,再赋值给变量

var i = 1;var a = ++i; 
 // var i = 1; i = i + 1; a = i;console.log(a); // => 2console.log(i); // => 2

其中var a = ++i,实际上做了下面这几个操作:

i = 1;a = i + 1;i = i + 1;a = i;

前置递减–i和前置递增++i类似,不同的是先做减法(减1),再赋值。比如:

var i = 6;
a = --i;
console.log(a); // => 5console.log(i); // => 5

代码中的–i相当于:

var i =  6;
i = i - 1;
a = i - 1;
a = i;

执行前置递增和递减时,变量的值都是在语句被求值以前改变的(返回它递增(减)之后的值)。在计算机科学领域中,这种情况通常被称之为副效应

var age = 29;var anotherAge = --age + 2;
console.log(age) // => 28 (age = age - 1)console.log(anotherAge); // 30 (anotherAge = age - 1 + 2)

这个示列中变量anotherAge的初始值等于变量age的值前置递减(age = age - 1)再加上2。也就是前置–age先做减法操作,age的值变成了28,所以再加上2,其值就是30。

另外在JavaScript运算符中,前置递增(++i)和递减(–i)与执行语句的优先级相同,因此整个语句会从左至右被求值。
例如:

var foo = 1;var baz = 20;var bar = ++foo + baz;var baf = foo + baz;
console.log(foo);  // => 2console.log(bar);  // => 22console.log(baf);  // => 22

在这里,bar等于22是因为foo选加了1之后与baz相加。而baf也等于22是因为相应的加法操作使用了foo加上1之后的值。

后置型递增(递减)

前面也说过了,递增(递减)分前置型和后置型。前置型是++i(–i),后置型不同的是,将++(或–)放置在变量的后面,即i++(或i–)。后置型递增(递减)又称之为后增量(post-increment)运算符。

后置型递增是和前置型递增不同之处是其先赋值,后递增。简单点说:后置型递增是先将自身的值赋值给变量,然后再自增1。

例如:

var num1=2var num2=20var num3=num1++  +  num2;
var num4=num1+num2;
alert(num1);      	=>  3  
alert(num3);      	=>  22 // var i; i=num1=2; num1=num+1=3 ; num3=i + num2;
alert(num4);             =>  23 //  num1+num2;
总结
  • 前置递增(++): 在变量的前面,先自身执行加法操作后在赋值(++i);

  • 后置递增(++): 在变量的后面,先赋值后在执行加法操作(i++);

  • 前置递减(–): 在变量的前面,先自身执行减法操作后在赋值(–i);

  • 后置递减(–): 在变量的前面,先赋值后在执行减法操作(i–);

归纳起来:前置递增(前置递减)运算符,先计算(自增1(或自减1)),再赋值,返回操作对象递增(递减)之后的值;后置递增(后置递减)运算符,先赋值,再计算(自增1(或自减1)),返回操作对象递增之前的值。

### 创建递增递减数组的方法 在 JavaScript 中可以使用多种方法来创建递增递减的数组。以下是几种常见的方式: #### 使用循环结构构建递增数组 通过 `for` 循环逐次增加数值并将其推入数组。 ```javascript let incrementArray = []; for (let i = 0; i < 10; i++) { incrementArray.push(i); } console.log(incrementArray); // 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ``` #### 构建递减数组同样适用此逻辑,只需调整起始值与终止条件以及步长方向即可。 这里展示一个简单的例子,从指定的最大数开始逐步减少直到最小数为止。 ```javascript function createDecrementArray(startValue, endValue) { let decrementArray = []; for (let j = startValue; j >= endValue; j--) { decrementArray.push(j); } return decrementArray; } const result = createDecrementArray(10, 1); console.log(result); // 输出: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] ``` #### 利用内置函数简化过程 ES6 引入了更简洁的方式来生成一系列连续整数——即使用 `Array.from()` 方法配合映射回调函数实现相同效果。 ```javascript // 创建递增数组 const incArr = Array.from({ length: 10 }, (_, index) => index); // 创建递减数组 const decArr = Array.from({ length: 10 }, (_, index) => 10 - index); console.log('Increment:', incArr); // Increment: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] console.log('Decrement:', decArr.reverse()); // Decrement: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] ``` 这些方法都可以有效地帮助开发者快速建立具有特定规律变化模式的数据集,在实际开发过程中非常实用[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值