Абстрактное сравнение равенства — префиксный оператор

#javascript

#javascript

Вопрос:

Я прочитал спецификации javascript и нашел этот фрагмент:

7.2.14 Сравнение абстрактных равенств

  1. Если тип (x) является логическим, верните результат сравнения ! Номер тона (x) == y.

Что !ToNumber(x) означает?

Пример:

true == 1 равно true

но !true == 1 равно false, поэтому это не оператор отрицания.

Комментарии:

1. !ToNumber(x) то же самое, что Boolean(ToNumber(x)) !== true . !true == 1 в основном false == 1 , который вычисляется как false .

2. но! 1 == 1 будет равно false, потому что true будет преобразовано в 1. Выражение true == 1 будет оценено как true.

3. «но! 1 == 1 будет false, потому что true будет преобразовано в 1.»Нет, !1 станет false тогда по сравнению с 1

Ответ №1:

Я нашел ответ в спецификации во время поиска «!».

Аналогично, префикс ! используется для указания на то, что следующий вызов абстрактной или синтаксически ориентированной операции никогда не вернет внезапное завершение и что вместо возвращаемого значения операции следует использовать поле результирующей записи завершения [[Value]]. Источник