Что такое логический флаг "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()функция может изменить все, что может изменить любая другая функция: свойства объекта, глобальные переменные, что угодно. Правило гарантирует, что эти изменения происходят в правильном порядке (изменения в левой части перед изменениями в правой части), независимо от того, что делает алгоритм для "переворота" операндов.

Другие вопросы по тегам