Семантика времени выполнения: оценка
UnaryExpression : ! UnaryExpression
1. Пусть expr будет результатом вычисления UnaryExpression. 2. Пусть oldValue будет! ToBoolean(? GetValue(expr)). 3. Если oldValue является true (истинно), вернуть false. 4. Вернуть истину true
Информационные ссылки
Стандарт ECMAScript - Раздел "13.5 Unary Operators" - https://tc39.es/ecma262/#sec-unary-operators
Стандарт ECMAScript - Раздел "13.5.7 Logical NOT Operator ( ! )" - https://tc39.es/ecma262/#sec-logical-not-operator