【发布时间】:2021-03-09 03:48:46
【问题描述】:
今天我看到后缀和赋值运算符的奇怪结果,这是我完全没有预料到的。
说吧
let a = 10;
当我们用后缀递增时,会加上1,如下所示
console.log( a++ ); // 10
console.log( a ); // 11
AFAIK a++ 是一个后缀操作,这意味着
- 首先,它将使用值(这就是
a++返回10的原因)然后 - 更新值
- 当我们打印该值时,该值已更新。这就是
a返回11的原因。
到目前为止一切顺利,
但是当我将后缀操作分配给变量时,它不会更新值。
a = a++;
console.log( a ); // 11
虽然我预计结果是 12。为什么会出现这个结果?提前致谢。
let a = 10;
console.log(a++);
console.log(a);
a = a++;
console.log(a);
【问题讨论】:
-
我想这可能是因为
assignment或postfix运算符的优先级。但是postfix的优先级大于assignment。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… -
a++计算为a的值,然后递增a。a的原始值在增量发生后被重新分配回变量(因为这是后缀表达式计算的结果) -
这意味着
b = b和b = b++都是相等的。 ???? -
是的,这就是后缀运算符的作用。
-
@SebastianSimon 是的,这回答了我的问题
标签: javascript