Входные значения x
и y
в описании алгоритма, как ожидается, будут полностью оценены до начала этих шагов. Флаг таков, что операции типа ToPrimitive()
выполняются в правильном порядке.
Например, x
и y
могут быть ссылками на объекты. Операция ToPrimitive()
вызовет либо .toString()
, либо .valueOf()
, чтобы выполнить операцию сравнения. Любая из этих функций может иметь побочные эффекты, поэтому флаг гарантирует, что операции выполняются в правильном порядке в соответствии с тем, как на самом деле выглядит исходный код.
«Побочный эффект» - это изменение состояния программы это происходит при вызове функции. Функция toString()
может изменить все, что может изменить любая другая функция: свойства объекта, глобальные переменные, что угодно. Правило гарантирует, что эти изменения происходят в правильном порядке (изменения левой стороны перед изменениями правой стороны), независимо от того, что алгоритм делает, чтобы «перевернуть» операнды.