Мои задачи по Javascript
Случайная задача
Список всех задач

Задача 45

let x = (true + true + '0') - (typeof NaN).length;
console.log(x); // ?
Чему равно x?
1
2
3
4
5
6
7
8
9
10
11
12
13
← Задача 44Задача 46 →
Пояснение Сначала интерпретатор разбирает true + true. Это не строки, значит это только сложение, в математических операциях true и false автоматически становятся в 1 и 0. Если сложить true + true, то получится 2.

Оператор + используется и для сложения и для конкатенации. Если один из операндов является строкой, то интерпретатор всегда выберет конкатенацию, а не сложение. 2 + '0' = '20'.

typeof NaN возвращает строку 'number' (эту особенность рекомендую просто запомнить). Длина 'number' - 6 символов.

В итоге получается, что слева строка '20', а справа число 6, а между ними оператор минус. Минус - это только математический оператор, поэтому интерпретатор видит, что слева операнд не number, и автоматически преобразует его в number.

20 - 6 = 14.



Написать сообщение - отзыв, пожелание и т.п.