javascript - JavaScript 中的 == 对于相同条件返回不同的结果

标签 javascript equality

在 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/

相关文章:

javascript - XML View 文档 Openui5

javascript - 如何在 ReactJS 中使用 lis 创建播放列表

javascript - 检查 N > 2 个数组之间的相等性并获得最大性能?

java - 如何在 Java 中比较字符串?

c - Scanf() 在特定情况下表现奇怪

rust - 在 Rust 中检查两个 HashMap 是否具有相同的键集

javascript - 如何排序和过滤 ngTable 日期(毫秒)数据?

javascript - Sequelize - 获取一组对象的最大日期

javascript - 是否可以在 React 中定义计算状态变量?

oracle - 比较对象是否相等时为 "PLS-00526: A MAP or ORDER function is required"