0

尽管使用 JavaScript 已经有一段时间了,但我最近才开始阅读有关operator priority的内容,但是我偶然发现了一些我似乎无法找到答案的墙。

考虑以下示例:

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

如果++xx++具有相同的关联性,在这种情况下怎么y 变成?2

这是伴随的 Fiddle

4

4 回答 4

3

运算符,当++它出现变量或属性引用之后时,是一个后增量操作。这意味着++子表达式的值是增量之前的值。

因此,在这里工作的不仅仅是运算符优先级。相反,它是运算符的基本语义。

++出现变量或属性引用之前时,它是一个pre-increment。这意味着子表达式的值是变量或属性已经增加的值。

前增量和后增量是 C 编程语言的一部分,并且可能是一种或多种早期语言。一些计算机指令集具有寻址模式,其行为让人联想到前增量和后增量的影响。

于 2013-05-23T21:12:16.067 回答
2

x++是后增量。它返回 的当前值,x然后其加一。++x,另一方面,是一个预增量。它将 的值增加x1,然后返回 的当前值x

于 2013-05-23T21:12:32.523 回答
1

将 放在变量++ 之后执行后缀递增。变量递增,但表达式中返回值。

将变量放在变量++ 之前是前缀增量。返回增加的值。这与运算符优先级无关。

进一步阅读

于 2013-05-23T21:12:17.237 回答
0

这是因为++xx++一样

  • ++x递增x并返回新值
  • x++递增x并返回原始值
于 2013-05-23T21:12:52.193 回答