在 if 条件中更改临时变量的序列会返回变量结果。
var temp=1;
var res=(temp++==temp)?"Equal":"Not Equal";
alert(res); //Not Equal
var res=(temp==temp++)?"Equal":"Not Equal";
alert(res); //Equal
JS fiddle :- http://jsfiddle.net/adiioo7/e9qLK/
最佳答案
非常简单。
在第一个例子中,temp
会递增,但由于它是一个post 递增运算符,因此表达式的左侧 (LHS) 的计算结果仍为其原始值。然后计算右侧 (RHS),但 temp
已经递增,因此它具有新值。然后比较 LHS 和 RHS - 它们不再相等。
在第二个示例中,增量发生在评估 RHS 之后,因此 LHS 和 RHS 保持相等。
我不会依赖这种行为。在其他语言 ISTR 中,当使用增量运算符时,在表达式中多次引用同一变量是显式未定义行为。
关于javascript - JavaScript 中的 == 对于相同条件返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15002425/