@bormor

Почему undefined + 1 = NaN?

Казалось бы, "+" запускает преобразование к строке и конкатенацию.
Я ожидал, что

undefined + 1 = String(undefined) + 1 = 'undefined' + 1 = 'undefined1'

По факту undefined + 1 = NaN

Почему так? Как происходит преобразование по шагам?

P.S. Или тут нет явно строк, поэтому '+' запускает преобразование к числу, т.е.

undefined + 1 = Number(undefined) + 1 = NaN + 1 = NaN

Так?
  • Вопрос задан
  • 319 просмотров
Решения вопроса 2
miraage
@miraage
Старый прогер
www.ecma-international.org/ecma-262/6.0/#sec-addit...

TLDR: конкретно в данном случае оба операнда приводятся к числу. ToNumber(undefined) = NaN. NaN + 1 = NaN.
Ответ написан
Комментировать
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Потому что таковы спецификации языка. Вот тут полная таблица: https://dorey.github.io/JavaScript-Equality-Table/
И не дублируйте вопросы, пожалуйста, — читайте спецификации языка, там все есть.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы