Преобразование `null` в `0` (javascript)

357
09 января 2018, 16:03

Допустим у нас есть вот такой код на javascript.

var years = prompt('Сколько вам лет?', 100);
console.log(years);

И как мы знаем после того как мы нажмем на cancel в модальном окне, наша функция вернет значение null.

Но мне в этом случае нужно что бы в переменной years было значение 0.

Конечно можно это сделать к примеру так:

if(years == null){
  years = 0;
}

Но мне нужно сделать это без каких либо проверок на null.

Как можно этого добиться ?

Answer 1

+ автоматически преобразует null в 0, заодно и строчку спарсит в число.

var x = +prompt("Сколько вам лет?",100); 
alert(x);

Либо вам необходимо сделать своё диалоговое окно, которое при отмене будет возвращать 0, либо вообще ничего не будет возвращать, а переменную зададите сразу равную 0.

Разумеется в реальности так делать смысла нет.

Answer 2

var years = prompt('Сколько вам лет?', 100) || 0; 
console.log(years);

Answer 3

Для преобразования к числу нужно вызвать внутреннюю функцию ToNumber.

Данная функция вызывается во многих местах:

  1. Number (value)
  2. Унарные операторы + и -
  3. Бинарные операторы +, -, *, /, %, **
  4. Постфиксные операторы --, ++
  5. Различный битовые операции: &, |, ^, ~
  6. Операторы сдвига: >>, <<, >>>

Важно: операторы сдвига и битовые операции приводят входной аргумент к беззнаковому и знаковому 32-х-битному числу.

READ ALSO
Элементы массива JS

Элементы массива JS

Как вывести диапазон идущих по порядку элементов массива?

304
Создание конструктора

Создание конструктора

Помогите пожалуйстаНужно создать что-то подобное этому https://print

255
Сгенерировать диапазон часов для datetimepicker

Сгенерировать диапазон часов для datetimepicker

Использую популярный плагин datetimepicker для выбора даты и времениВ нем есть метод allowTimes, где указываются разрешенные к выбору часы, к примеру:

273
Как сделать паузу/pause в Selenium? Selenium/JavaScript

Как сделать паузу/pause в Selenium? Selenium/JavaScript

Как через код реализовать приостановку выполнения кода? Искал решения в Интернете, но зарубежные форумы дают решение, подразумевая "pause" как...

243