#javascript
#javascript
Вопрос:
Я прочитал спецификации javascript и нашел этот фрагмент:
7.2.14 Сравнение абстрактных равенств
- Если тип (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]]. Источник