在 ECMAScript 中"Abstract Relational Comparison Algorithm" "LeftFirst"布尔标志到底是什么?



有人可以解释一下ECMAScriptAbstract Relational Comparison Algorithm的布尔标志LeftFirst到底是什么吗?我知道只有一个运算符<处理所有其他关系运算符,如>>=<=如抽象关系比较中的 ECMAScript 规范中所述 使用LeftFirst布尔标志和示例:当我们编写并运行类似10 > 5的操作时,LeftFirst Boolean Flag变得false,并且左侧操作数10移动到操作数5所在的右侧,右侧操作数5移动到操作数10之前的左侧,>运算符成为<运算符,最后5 < 10执行这样的事情,但现在我的问题是:在执行5 < 10时,我必须知道首先评估的操作数是操作数5还是操作数10?我问这个是因为他们在抽象关系比较算法的ECMAScript规范中没有提到这一点。

我必须知道为什么>=LeftFirst真执行,为什么<=LeftFirst假执行。请帮助我

算法描述中xy的输入值应在这些步骤开始之前进行全面评估。该标志是为了使像ToPrimitive()这样的操作以正确的顺序发生。

例如,xy可能是对象引用。ToPrimitive()操作将调用.toString().valueOf()以执行比较操作。这些函数中的任何一个都可能有副作用,因此该标志确保根据源代码的实际外观以正确的顺序进行操作。

"副作用"是在函数调用中发生的程序状态更改。toString()函数可以更改任何其他函数可以更改的任何内容:对象的属性、全局变量等。该规则确保这些更改以正确的顺序发生(左侧更改在右侧更改之前),无论算法如何"翻转"操作数。

相关内容

  • 没有找到相关文章

最新更新