【编程向导】JavaScript-运算符之更新表达式

梦里繁花落尽,此情未央,此意难忘,弦虽断,曲犹扬。!与技术共同呼吸,与程序共命运。


更新表达式包括 前自增/自减运算符后自增/自减运算符

示例

前自增

前自增:先自增,再赋值

let n = 10;

// 前自增
const res = ++n;

console.log(n);
// 11
console.log(res);
// 11

前自减

前自减:先自减,再赋值

let n = 10;

// 前自减
const res = --n;

console.log(res);
// 9
console.log(n);
// 9

后自增

后自增:先赋值,再自增

let n = 10;

// 后自增
const res = n++;

console.log(res);
// 10
console.log(n);
// 11

后自减

后自减:先赋值,再自减

let n = 10;

// 后自减
const res = n--;

console.log(res);
// 10
console.log(n);
// 9

异同对比

前自增/前自减与后自增/后自减的异同点:

  • 相同点:无论是前自增/前自减还是后自增/后自减,对于变量而言,没有区别,都是自身+1/-1
  • 不同点
    • 前自增/前自减:先自增/自减(变量自身),后赋值(将变量的值赋值给自增表达式的结果)
    • 后自增/后自减:先赋值,后自增/自减

为什么后自增后自减优先级很高却后操作?

前置操作返回加(减)1 的值,所以返回对象本身,这是左值(++i,先自增后操作)

后置操作为右值,同样对其操作数 +1/-1,但操作后产生操作数原来的、未修改的值为表达式的结果(可理解为 i++ 为先操作,后自增)。实际上,由于后自增(减)优先级很高,因此会先自增(减),但在自增(减)前会创建一个副本,用来保存操作数原来的值,操作后会返回副本的值给表达式。

建议:只有在必要时才使用后置操作符,尽量使用前置操作符。因为前置操作需要做的工作更少,而后置操作必须先保存操作数原来的值,对于 int 型对象和指针,编译器会优化掉这项额外的工作,但对于更多复杂的迭代器类型,这种额外的工作可能会花费更大的代价。

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wtrees_松阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值