ECMAScript 中 "Abstract Relational Comparison Algorithm" 中的 "LeftFirst" 布尔标志到底是什么?
What exactly the "LeftFirst" Boolean Flag is in "Abstract Relational Comparison Algorithm" in ECMAScript?
有人可以解释 LeftFirst
布尔标志在 Abstract Relational Comparison Algorithm
和 ECMAScript
中的确切含义吗?我知道只有一个运算符 <
处理所有其他关系运算符,如 >
、>=
、<=
,如 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 执行。请帮助我
算法描述中的输入值 x
和 y
预计在这些步骤开始之前得到全面评估。该标志是为了让像 ToPrimitive()
这样的操作以正确的顺序发生。
例如,x
和 y
可能是对象引用。 ToPrimitive()
操作将调用 .toString()
或 .valueOf()
以执行比较操作。这些函数中的任何一个都可能有副作用,因此该标志可确保根据源代码的实际情况以正确的顺序执行操作。
A "side-effect" 是在函数调用中发生的程序状态更改。 toString()
函数可以改变任何其他函数可以改变的任何东西:对象的属性、全局变量,任何东西。该规则确保这些更改以正确的顺序发生(左侧更改在右侧更改之前),无论算法对 "flip" 操作数做什么。
有人可以解释 LeftFirst
布尔标志在 Abstract Relational Comparison Algorithm
和 ECMAScript
中的确切含义吗?我知道只有一个运算符 <
处理所有其他关系运算符,如 >
、>=
、<=
,如 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 执行。请帮助我
算法描述中的输入值 x
和 y
预计在这些步骤开始之前得到全面评估。该标志是为了让像 ToPrimitive()
这样的操作以正确的顺序发生。
例如,x
和 y
可能是对象引用。 ToPrimitive()
操作将调用 .toString()
或 .valueOf()
以执行比较操作。这些函数中的任何一个都可能有副作用,因此该标志可确保根据源代码的实际情况以正确的顺序执行操作。
A "side-effect" 是在函数调用中发生的程序状态更改。 toString()
函数可以改变任何其他函数可以改变的任何东西:对象的属性、全局变量,任何东西。该规则确保这些更改以正确的顺序发生(左侧更改在右侧更改之前),无论算法对 "flip" 操作数做什么。