澄清JavaScript操作符在赋值和加值时的优先级
Clarification on JavaScript operator precedence when assigning and incrementing values
尽管使用JavaScript已经有一段时间了,但我最近才开始阅读有关操作符优先级的内容,然而我偶然发现了一些问题,我似乎找不到答案。
考虑下面的例子:
x=1; // x === 1
x++; // x === 2
x=1; // x === 1
y=x++; // x === 2, y === 1
如果++
的优先级高于=
,为什么y
没有变成2
?
现在考虑:
x=1; // x === 1
y=++x; // x === 2, y === 2
如果++x
和x++
具有相同的结合律,那么在这种情况下,y
如何成为2
?
++
操作符,当出现在变量或属性引用之后时,是递增后操作。这意味着++
子表达式的值是之前的值。
因此这里不仅仅是操作符优先级在起作用。相反,它是操作符的基本语义。
当++
在变量或属性引用之前出现时,它是预增量。这意味着子表达式的值是变量或属性已经增加的值。
前递增和后递增是C编程语言的一部分,可能是一种或多种更早的语言。有些计算机指令集具有寻址模式,其行为使人想起前递增和后递增的效果。
x++
是后增量。它返回x
的当前值,然后将其加1。另一方面,++x
是一个预增量。它将x
的值加1,然后,然后返回x
的当前值
将++
放在变量之后执行后缀递增。变量是递增的,但是在表达式中返回旧的值。
将++
放在变量之前是前缀递增。返回增加后的值。这与操作符优先级无关。
这是因为++x
和x++
不是。
-
++x
增加x
并返回新值 -
x++
增加x
并返回原始值
相关文章:
- JavaScript 中三元条件和逻辑和运算符的运算符优先级
- 如何使用javascript更改.css优先级
- Javascript 数组:合并 2 个具有优先级的数组
- 我可以在 Javascript 中更改 css 样式的优先级吗?
- JavaScript 事件优先级
- JavaScript 中函数执行的优先级
- JavaScript数据结构:优先级队列,字典,平衡二叉树
- 如何在 JavaScript 中实现一个简单的优先级侦听器模式
- 具有递减键操作的 JavaScript 优先级队列
- JavaScript 中事件处理和计时器服务的优先级是什么?
- 如何在 SharePoint 托管应用程序中使用 javascript REST API 发送附件和设置电子邮件优先级
- 如何在javascript中设置函数的优先级
- JavaScript发布/子消息优先级
- Javascript文件document.ready()的优先级
- 为什么“;new Date().toString()"给定Javascript运算符优先级的工作
- 感叹号的优先级是否低于Javascript中的方法调用和属性访问
- Javascript - 了解作用域链的引用优先级
- 我如何切换视频元素的优先级,可以在JavaScript/Html中播放和暂停
- JavaScript中的运算符优先级
- JavaScript中的优先级待办事项列表