Преобразование к числу в JavaScript

Давайте рассмотрим следующий код:

let a = '2'; let b = '3'; alert(a + b); // выведет '23'

Как вы видите, в нашем случае обе переменных содержат в себе строки и складываются, соответственно, как строки.

Пусть мы хотели бы, чтобы значения наших переменных в данном случае складывались не как строки, а как числа. В этом случае мы можем принудительно преобразовать тип нашей переменной к числу, используя специальную функцию Number:

let a = '2'; let b = '3'; alert(Number(a) + Number(b)); // выведет 5

Можно преобразовывать строки в числа не в операции сложения, а сразу при записи в переменную - это будет работать:

let a = Number('2'); // в переменную запишется число 2 let b = Number('3'); // в переменную запишется число 3 alert(a + b); // выведет 5

Дана переменная a со значением '10' и переменная b со значением '20'. Сложите данные переменные как числа.

Не запуская код, определите, что выведется на экран:

alert( Number('2') + Number('3') );

Не запуская код, определите, что выведется на экран:

alert( 2 + Number('3') );

Не запуская код, определите, что выведется на экран:

alert( '2' + Number('3') );

Альтернатива

Часто для сокращения кода вместо Number перед строкой ставят знак +. Таким образом над строкой выполняется операция, допустимая только для чисел и строка переводится в число.

Смотрите пример:

let a = +'2'; // в переменную запишется число 2 let b = +'3'; // в переменную запишется число 3 alert(a + b); // выведет 5

Вот еще пример:

let a = '2'; let b = +a; // в b запишется число 2

А вот следующий пример, хоть и рабочий, но выглядит не очень красиво. В нем более уместно было бы использование функции Number:

let a = '2'; let b = '3'; alert(+a + +b); // выведет 5

Дан код:

let a = '2'; let b = '3'; alert(a + b); // выведет '23'

С помощью описанного приема с плюсом исправьте приведенный код так, чтобы в переменные a и b присваивалось число, а не строка, ну и результатом, соответственно, было не '23', а 5.

Не только цифры

При попытке преобразовать строку, содержащую не только цифры, но и другие символы, функция Number вернет своим результатом значение NaN:

alert(Number('2s')); // выведет NaN

Тот же эффект даст использование плюса:

alert(+'2s'); // выведет NaN