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

What exactly the "LeftFirst" Boolean Flag is in "Abstract Relational Comparison Algorithm" in ECMAScript?

有人可以解释 LeftFirst 布尔标志在 Abstract Relational Comparison AlgorithmECMAScript 中的确切含义吗?我知道只有一个运算符 < 处理所有其他关系运算符,如 >>=<=,如 Abstract Relational Comparison 中的 ECMAScript 规范所述 使用 LeftFirst 布尔标志,例如:当我们写和 运行 像 10 > 5 这样的操作时,LeftFirst Boolean Flag 变成 false,而左操作数 10 移动到操作数 5 所在的右侧,右操作数 5 移动到之前操作数 10 所在的左侧,并且 > 运算符变成了 < 运算符,最后执行了类似这样的操作 5 < 10,但现在我的问题是:在执行 5 < 10 时,我必须知道首先评估的是哪个操作数,它是操作数 5 还是操作数 10?我问这个是因为他们没有在 Abstract Relational Comparison Algorithm.

ECMAScript 规范中提到这个

而且我必须知道为什么 >=LeftFirst true 执行,为什么 <=LeftFirst false 执行。请帮助我

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

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

A "side-effect" 是在函数调用中发生的程序状态更改。 toString() 函数可以改变任何其他函数可以改变的任何东西:对象的属性、全局变量,任何东西。该规则确保这些更改以正确的顺序发生(左侧更改在右侧更改之前),无论算法对 "flip" 操作数做什么。