gpt4 book ai didi

javascript - Javascript 中操作的执行顺序是否保证始终相同?

转载 作者:搜寻专家 更新时间:2023-11-01 04:35:47 25 4
gpt4 key购买 nike

当我做这样的事情时:

var x = 5;
console.log( x + (x += 10) ); //(B) LOGS 10, X == 20
console.log( (x += 10) + x ); //(A) LOGS 0, X == 30

(A) 和 (B) 之间返回值的差异由计算时 x 的值来解释。我认为后台应该发生这样的事情:

     TIME ---->
(A) (x = 5) + (x += 10 = 15) = 20
(B) (x += 10 == 15) + (x == 15) = 30

但这只适用于当且仅当 x 以与其编写的相同的从左到右 顺序求值。

所以,我有几个问题,

这是否保证适用于所有 Javascript 实现?

标准是这样定义的吗?

或者,这是 Javascript 世界中的某种未定义行为吗?

最后,同样的想法可以应用于函数调用,

var x = 5;
console.log(x += 5, x += 5, x += 5, x += 5); // LOGS 10, 15, 20, 25

它们似乎也按顺序被评估,但是是否有更强的保证这应该总是发生?

最佳答案

Is this guaranteed to be true for all Javascript implementations?

是的。

Is it defined to be this way by the standard?

可以的,可以自己看here .

具体来说,runtime semantics: evaluation of the addition operator (+)指定在右表达式之前评估左表达式。

对于evaluation of argument lists也是一样的.

Or, is this some kind of undefined behavior in Javascript world?

是的,there is undefined behaviour在 JavaScript 中,但不在此处。

关于javascript - Javascript 中操作的执行顺序是否保证始终相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35382317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com