Что такое логический флаг "LeftFirst" в "абстрактном алгоритме реляционного сравнения" в ECMAScript?
Может кто-нибудь объяснить, что именно LeftFirst
Логический флаг находится в Abstract Relational Comparison Algorithm
в ECMAScript
? Я знаю что есть только один оператор<
обработка всех других операторов отношения, таких как >
, >=
, <=
как указано в спецификации ECMAScript в Абстрактном реляционном сравнении с использованиемLeftFirst
Логический флаг для и пример: когда мы пишем и запускаем операцию вроде 10 > 5
в LeftFirst Boolean Flag
становится false
, а левый операнд 10
перемещается в правую часть, где операнд 5
есть, а правый операнд 5
перемещается в левую часть, где операнд 10
раньше было, и >
оператор становится <
оператор и, наконец, выполняется что-то подобное 5 < 10
, но теперь мой вопрос: при выполнении 5 < 10
Я должен знать, какой операнд оценивается первым, это операнд 5
или это операнд 10
? Я спрашиваю об этом, потому что они не упомянули об этом вECMAScript
спецификация в абстрактном алгоритме реляционного сравнения.
и я должен знать, почему >=
выполняется с LeftFirst
правда и почему <=
выполняется с LeftFirst
ложный. Пожалуйста, помогите мне
1 ответ
Входные значения x
а также y
в описании алгоритма должны быть полностью оценены до начала этих шагов. Флаг таков, что такие операции, какToPrimitive()
происходят в правильном порядке.
Например, x
а также y
могут быть объектными ссылками. ВToPrimitive()
операция вызовет либо .toString()
или .valueOf()
для выполнения операции сравнения. Любая из этих функций может иметь побочные эффекты, поэтому флаг гарантирует, что операции в правильном порядке в соответствии с тем, как на самом деле выглядит исходный код.
"Побочный эффект" - это изменение состояния программы, которое происходит при вызове функции. АtoString()
функция может изменить все, что может изменить любая другая функция: свойства объекта, глобальные переменные, что угодно. Правило гарантирует, что эти изменения происходят в правильном порядке (изменения в левой части перед изменениями в правой части), независимо от того, что делает алгоритм для "переворота" операндов.