javascript中a++和++a区别

我们先说一下结论

  1. 后缀自增法(a++): 先进行表达式运算,再进行自增运算。
  2. 前缀自增法(++a): 先进行自增运算,再进行表达式运算。

我们举三个例子,第二个例子和第三个例子容易混淆,需要留意一下

例子1:

let a = 1
let b = a++
b // 1
a // 2

这里a++会先进行表达式运算,也就是先进行let b = a,然后进行a = a + 1

例子2:

function fn(num) {
  console.log(num)
}
let a = 1
fn(a++) // 1
a // 2

和第一个例子是一个道理,就不赘述了。

我们再来看容易和例子3混淆的例子:

function fn(num) {
  console.log(num)
}
let a = 1
fn(a = a + 1) // 2
a // 2

可以见得,a++a = a + 1是等价的吗?显然不是。

++a的话我目前没遇到什么坑,如果有遇到过++a坑的朋友可以评论区留言。,我们就快速在用++a过一下上面的例子。

let a = 1
let b = ++a
b // 2
a // 2

function fn(num) {
  console.log(num)
}
let a = 1
fn(++a) // 2
a // 2

function fn(num) {
  console.log(num)
}
let a = 1
fn(a = a + 1) // 2
a // 2

————————————————————————
2022-8-28
————————————————————————
今天看博客看到了这样一个例子:

let a = 1, b
b = (a ++) + a // ?

其实关于a++或是++a,MDN上都有详细的解析自增 (++)

我们直接把原文里的话拿过来:

  • 如使用后置(Postfix)自增,操作符在操作数后(例如 x++), 操作数会加一,然后返回加一之前的值。
  • 如使用前置(Prefix)自增,操作符在操作数前(例如 ++x), 操作数会加一,然后返回加一之后的值。

所以我们把a++看成是c,因为x++会返回加一之前的值,所以c是1,而对于(a ++)+ a里面的+a,此时因为前面的a++,a已经变成了2,所以结果b是3

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值