Nan javascript как исправить

Глобальное свойство NaN - это значение, представляющее Not-A-Number.

NaN

Глобальное свойство NaN — это значение, представляющее Not-A-Number.

Атрибуты свойства NaN
Writable no
Enumerable no
Configurable no

Try it

Description

NaN — это свойство глобального объекта . Другими словами, это переменная в глобальной области видимости.

Начальное значение NaN равно Not-A-Number — то же, что и значение Number.NaN . В современных браузерах NaN является ненастраиваемым и недоступным для записи свойством. Даже если это не так, избегайте переопределения. NaN в программе довольно редко .

Существует пять различных типов операций, возвращающих NaN :

  • Число не может быть проанализировано (например, parseInt("blabla") или Number(undefined) )
  • Математическая операция, результат которой не является действительным числом (например, Math.sqrt(-1) )
  • Операнд аргумента — NaN (например, 7 ** NaN )
  • Неопределенная форма (например, 0 * Infinity или undefined + undefined )
  • Любая операция, которая включает строку и не является операцией сложения (например, "foo" / 3 )

Examples

Тестирование против NaN

NaN сравнивает unequal (через == , != , === и !== ) с любым другим значением, в том числе с другим значением NaN . Используйте Number.isNaN() или isNaN() , чтобы наиболее четко определить, является ли значение NaN . Или выполните самосравнение: NaN и только NaN будут сравниваться неравно самому себе.

NaN === NaN;        
Number.NaN === NaN; 
isNaN(NaN);         
isNaN(Number.NaN);  
Number.isNaN(NaN);  

function valueIsNaN(v) { return v !== v; }
valueIsNaN(1);          
valueIsNaN(NaN);        
valueIsNaN(Number.NaN); 

Однако обратите внимание на разницу между isNaN() и Number.isNaN() : первый вернет true если значение в настоящее время равно NaN , или если оно будет NaN после приведения его к числу, а последнее вернет true только если значение в настоящее время NaN :

isNaN('hello world');        
Number.isNaN('hello world'); 

По той же причине использование значения bigint вызовет ошибку с isNaN() , а не с Number.isNaN() :

isNaN(1n);        
Number.isNaN(1n); 

Кроме того, некоторые методы массива не могут найти NaN , а другие -.

const arr = [2, 4, NaN, 12];
arr.indexOf(NaN);                      
arr.includes(NaN);                     
arr.findIndex((n) => Number.isNaN(n));   

Specifications

Browser compatibility

Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet Deno Node.js
NaN

1

12

1

4

4

1

4.4

18

4

10.1

1

1.0

1.0

0.10.0

See also

  • Number.NaN
  • Number.isNaN()
  • isNaN()


JavaScript

  • Math.tanh()

    Функция Math.tanh()возвращает гиперболический тангенс числа,то есть tanh x sinh cosh e 2 1 frac{sinh x}{cosh {e^x frac{e^{2x}1}{e^{2x}+1}Число.

  • Math.trunc()

    Функция Math.trunc()возвращает целую часть числа,удаляя все дробные цифры.

  • Number

    Number-это примитивный объект-обертка,используемый для представления и манипулирования числами,такими как 37 -9.25.

  • Number.EPSILON

    Свойство Number.EPSILON представляет разницу между 1 и наименьшим значением с плавающей точкой больше чем Вы не должны создавать объект Number для доступа к этому свойству.

NaN в JavaScript

От автора: В данной статье мы познакомимся со специальным свойством NaN (Not-A-Number), которое является значением, представляющим не-число.

Тип числа в JavaScript содержит целые числа и числа с плавающей запятой:

const integer = 4;

const float = 1.5;

typeof integer; // => ‘number’

typeof float;   // => ‘number’

Плюс есть два специальных числовых значения: Infinity (число больше, чем любое другое число) и NaN (представляющее концепцию «не число»):

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнее

const infinite = Infinity;

const faulty = NaN;

typeof infinite; // => ‘number’

typeof faulty;   // => ‘number’

Хотя непосредственная работа с NaN редко встречается, оно может неожиданно появиться после неудачной операции с числами.

Давайте подробно рассмотрим специальное значение NaN: как проверить, содержит ли переменная NaN, и сценарии, которые в которых генерируется значения «не число».

1. Число NaN

Тип числа в JavaScript — это набор всех числовых значений, включая «не число», положительную бесконечность и отрицательную бесконечность.

«Not A Number» можно получить с помощью специального выражения NaN или как свойство глобального объекта или функции Number:

typeof NaN;        // => ‘number’

typeof window.NaN; // => ‘number’

typeof Number.NaN; // => ‘number’

«Не число» — это значение, которое не представляет действительное число, несмотря на то, что оно имеет тип числа. Через NaN полезно представлять ошибочные операции с числами. Например, умножение числа на undefined не является допустимой операцией, поэтому дает NaN:

Также попытка разобрать недопустимую числовую строку, например, ‘Joker’ приводит к NaN:

parseInt(‘Joker’, 10); // => NaN

2. Проверка на равенство с NaN

Интересным свойством NaN является то, что оно не равно ни одному значению, даже самому себе:

Это поведение полезно для определения, является ли переменная NaN:

const someNumber = NaN;

if (someNumber !== someNumber) {  console.log(‘Is NaN’);

} else {

  console.log(‘Is Not NaN’);

}

// logs «Is NaN»

Выражение someNumber !== someNumber равно true, только если someNumber является NaN. Таким образом, приведенный выше фрагмент регистрирует в консоли «Is NaN». JavaScript содержит встроенные функции для определения NaN: isNaN() и Number.isNaN():

isNaN(NaN); // => true

isNaN(1);   // => false

Number.isNaN(NaN); // => true

Number.isNaN(1);   // => false

Разница между этими функциями заключается в том, что Number.isNaN() не преобразуется свой аргумент в число:

isNaN(‘Joker12’);        // => true

Number.isNaN(‘Joker12’); // => false

isNaN(‘Joker12’) преобразует аргумент ‘Joker12’ в число, которое является NaN. Таким образом, функция возвращает true.

С другой стороны, Number.isNaN(‘Joker12’) проверяет аргумент без преобразования. Функция возвращает false, потому ‘Joker12’ не равно NaN.

3. Операции, дающие NaN

3.1 Парсинг чисел

В JavaScript вы можете преобразовать числовые строки в числа. Например, вы можете легко преобразовать строку ‘1.5’ в число с плавающей запятой 1.5:

const numberString = ‘1.5’;

const number = parseFloat(numberString);

number; // => 1.5

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

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнее

parseFloat(‘Joker12.5’); // => NaN

parseInt(‘Joker12’, 10); // => NaN

Number(‘Joker12’);       // => NaN

При парсинге чисел рекомендуется проверить, не является ли результат парсинга NaN:

let inputToParse = ‘Invalid10’;

let number;

number = parseInt(inputToParse, 10);

if (isNaN(number)) {  number = 0;

}

number; // => 0

Парсинг inputToParse не удался, поэтому parseInt(inputToParse, 10) возвращается NaN. Условие if (isNaN(number)) оценивается, как true, и 0 назначается number.

3.2 undefined в качестве операнда

При использовании undefined в качестве операнда в арифметических операциях, таких как сложение, умножение и т д. мы получаем NaN. Например:

function getFontSize(style) {

  return style.fontSize;

}

const fontSize = getFontSize({ size: 16 }) * 2;

const doubledFontSize = fontSize * 2;

doubledFontSize; // => NaN

getFontSize() — это функция, которая обращается к свойству fontSize из объекта стиля. При вызове getFontSize({ size: 16 }) результатом будкт undefined (свойство fontSize не существует в объекте { size: 16 }). fontSize * 2 оценивается как undefined * 2, что дает NaN.

«Not A Number» генерируется, когда в качестве значения в арифметических операциях используется отсутствующее свойство или функция, возвращающая undefined. Отсутствие undefined в арифметических операциях — это хороший способ предотвратить получение NaN.

3.3 NaN как операнд

Значение NaN также генерируется, когда операндом в арифметических операциях является NaN:

1 + NaN; // => NaN

2 * NaN; // => NaN

NaN распространяется на арифметические операции:

let invalidNumber = 1 * undefined;

let result = 1;

result += invalidNumber; // appendresult *= 2;             // duplicate

result++;                // increment

result; // => NaN

Операции с переменной result прерываются после добавления к result значения invalidNumber (которое является NaN).

3.4 Неопределенные формы

Значение NaN создается, когда арифметические операции имеют неопределенные формы. Деление 0 / 0 и Inifinity / Infinity:

0 / 0;               // => NaN

Infinity / Infinity; // => NaN

Умножение 0 и Infinity:

Сложение бесконечных чисел с разными знаками:

Infinity + Infinity; // => NaN

3.5 Неверные аргументы математических функций

Квадратный корень из отрицательного числа:

Math.pow(2, 0.5); // => NaN

(2) ** 0.5;       // => NaN

Или логарифм отрицательного числа:

4. Заключение

Понятие «не число», выраженное в JavaScript с помощью NaN, полезно для представления ошибочных операций над числами. NaN не равно ни одному значению, даже самому себе. Рекомендуемый способ проверить, содержит ли переменная NaN — использовать Number.isNaN(value).

Преобразование числовых строк в числа, в случае неудачи может дать NaN. Рекомендуется проверять, не возвращают ли parseInt(), parseFloat() или Number() NaN.

Если undefined или NaN используются в качестве операнда в арифметических операциях, это обычно приводит к NaN. Правильная обработка undefined (предоставление значений по умолчанию для отсутствующих свойств) является рекомендованным подходом для предотвращения этой ситуации.

Неопределенные формы или недопустимые аргументы для математических функций также приводят получению NaN. Но это случается редко. Вот мой практический совет: «Получили NaN? Ищите undefined!»

Автор: Dmitri Pavlutin

Источник: //dmitripavlutin.com

Редакция: Команда webformyself.

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнее

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Смотреть

Shekanya

0 / 0 / 0

Регистрация: 09.04.2016

Сообщений: 9

1

15.05.2016, 09:37. Показов 9579. Ответов 14

Метки нет (Все метки)


Чтобы не было написано NaN, а к примеру 0.
Здесь в Особый режим(fieldres1) выдает NaN, когда field1 и field2 не заполнены. Точнее заполнены, но при удалении значений выдает NaN…

HTML5
1
2
3
4
5
6
7
Количество работников:<input type="number" min="1" id="field2" onKeyUp="recalc()">
Количество часов:<input type="number" min="3" id="field1" onKeyUp="recalc()">
Особый режим:<input type="checkbox" id="chbox" value="500" onclick="recalc()"/>
Количество человеко-часов:<output id="fieldres1">0</output>
Переработка:<output id="fieldres2">0</output>
Зп без учета переработки:<output id="fieldres3">0</output>
Зп с учетом переработки:<output id="fieldres4">0</output>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function recalc()
{
    return number(o).tofixed(1);
}
function recalc()
{
    var p=parseFloat(document.getElementById('field1').value);
    var h=parseFloat(document.getElementById('field2').value);
        hh=p*h;
    var nh=document.getElementById('chbox').value;
        document.getElementById('fieldres1').innerHTML=hh;
            if(hh<30)tf=(1000);
            if(hh<30)py=(hh*tf);
            if(hh>29)tf=(950);
            if(hh>29)py=(hh*950);
            if(hh>49)tf=(900);
            if(hh>49)py=(hh*900);
            if(document.getElementById('chbox').checked)py=(py+h*nh);
        document.getElementById('fieldres2').innerHTML=tf;
        document.getElementById('fieldres3').innerHTML=py;
            if(hh<30)pye=(hh*1000/10*9);
            if(hh>29)pye=(hh*950/10*9);
            if(hh>49)pye=(hh*900/10*9);
            if(document.getElementById('chbox').checked)pye=(pye+h*nh);
        document.getElementById('fieldres4').innerHTML=pye;
}

Извиняюсь, возможно уже тысячекратно объяснялось, но искал с фонариком — гугл выдал «чтобы не было написано NaN» только ссылки где про чекбоксы, из которых ну совсем ничего не понятно:
1.Один
2.Два
3.Три
Помогите позязя!

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



WeMeSder

32 / 31 / 21

Регистрация: 13.07.2014

Сообщений: 374

15.05.2016, 10:12

2

может просто проверить и изменить если NaN:

Javascript
1
if(tf == 'NaN') tf = 0;



0



Shekanya

0 / 0 / 0

Регистрация: 09.04.2016

Сообщений: 9

16.05.2016, 01:24

 [ТС]

3

Цитата
Сообщение от WeMeSder
Посмотреть сообщение

может просто проверить и изменить если NaN:

Javascript
1
if(tf == 'NaN') tf = 0;

не работает(
и к тому же, NaN выдает не tf ведь, а hh, и почему знак неравенства?



0



$ su

1605 / 520 / 97

Регистрация: 18.11.2010

Сообщений: 2,807

Записей в блоге: 2

16.05.2016, 02:19

4

Цитата
Сообщение от Shekanya
Посмотреть сообщение

не работает(
и к тому же, NaN выдает не tf ведь, а hh, и почему знак неравенства?

наоборот там стоит знак равенства, неравенство это !=



1



sad67man

2031 / 1115 / 566

Регистрация: 23.08.2015

Сообщений: 2,837

16.05.2016, 10:14

5

Лучший ответ Сообщение было отмечено Shekanya как решение

Решение

NaN == NaN всегда возвращает false. Правильней будет так

Javascript
1
if(isNaN(hh) ) hh = 0;



1



-28 / 12 / 2

Регистрация: 02.12.2015

Сообщений: 620

16.05.2016, 11:48

6

hh=hh*1 и value=0 в инпуте не подходит?



0



2031 / 1115 / 566

Регистрация: 23.08.2015

Сообщений: 2,837

16.05.2016, 12:26

7

НиколайВасильев, NaN*1 вернет NaN



0



Философ-разговорник

620 / 320 / 106

Регистрация: 20.02.2016

Сообщений: 754

Записей в блоге: 1

16.05.2016, 14:16

8

Я может чего не догоняю, но, если не затруднит уважаемую публику, объясните мне нормально ли иметь две функции с одинаковыми именами и ожидать, что они не переназначат друг друга, а будут работать обе-две?! Если так, то нахрена я всем функциям даю разные названия и вообще даю названия, а не использую анонимные?



0



-28 / 12 / 2

Регистрация: 02.12.2015

Сообщений: 620

16.05.2016, 19:58

9

Цитата
Сообщение от sad67man
Посмотреть сообщение

NaN*1 вернет NaN

после value=0 NaN не будет



0



Shekanya

0 / 0 / 0

Регистрация: 09.04.2016

Сообщений: 9

17.05.2016, 00:44

 [ТС]

10

Цитата
Сообщение от sad67man
Посмотреть сообщение

NaN == NaN всегда возвращает false. Правильней будет так

Javascript
1
if(isNaN(hh) ) hh = 0;

Работает! Спасибо! А не могли бы вы еще объяснить, почему в остальных output’ах не выводился NaN, а только в первом?
И нельзя ли без вот таких костылей как

Javascript
1
if(isNaN(hh) ) hh = 0;

сделать чтобы и в первом тоже не выводился NaN?

Добавлено через 6 минут

Цитата
Сообщение от НиколайВасильев
Посмотреть сообщение

hh=hh*1 и value=0 в инпуте не подходит?

Цитата
Сообщение от sad67man
Посмотреть сообщение

НиколайВасильев, NaN*1 вернет NaN

Действительно, ведь NaN не может быть равен NaN — https://ru.wikipedia.org/wiki/NaN
Или я вас неправильно понял? Что вы именно имели ввиду?
Добавлено через 1 минуту

Цитата
Сообщение от Padonak
Посмотреть сообщение

Я может чего не догоняю, но, если не затруднит уважаемую публику, объясните мне нормально ли иметь две функции с одинаковыми именами и ожидать, что они не переназначат друг друга, а будут работать обе-две?! Если так, то нахрена я всем функциям даю разные названия и вообще даю названия, а не использую анонимные?

Вы об чем?



0



2031 / 1115 / 566

Регистрация: 23.08.2015

Сообщений: 2,837

17.05.2016, 00:50

11

Shekanya, Если не удается привести строку в число, то получается NaN, что означает «не чмсло», т.е. parseFloat(«») или parseFloat(«abc») вернет NaN. Если NaN умножить на любое число, то вернется тоже NaN. Так же NaN может возникнуть при делении 0/0.



0



Shekanya

0 / 0 / 0

Регистрация: 09.04.2016

Сообщений: 9

17.05.2016, 00:58

 [ТС]

12

Цитата
Сообщение от sad67man
Посмотреть сообщение

Shekanya, Если не удается привести строку в число, то получается NaN, что означает «не чмсло», т.е. parseFloat(«») или parseFloat(«abc») вернет NaN. Если NaN умножить на любое число, то вернется тоже NaN. Так же NaN может возникнуть при делении 0/0.

Ды это понятно, непонятно почему

Цитата
Сообщение от Shekanya
Посмотреть сообщение

в остальных output’ах не выводился NaN, а только в первом?

и

Цитата
Сообщение от Shekanya
Посмотреть сообщение

нельзя ли без вот таких костылей как

Javascript
1
if(isNaN(hh) ) hh = 0;

сделать чтобы и в первом тоже не выводился NaN? (ведь остальные output’ы обходятся без

Javascript
1
if(isNaN(hh) ) hh = 0;

и не выдают NaN когда в input’ах появляется пустота)



0



sad67man

2031 / 1115 / 566

Регистрация: 23.08.2015

Сообщений: 2,837

17.05.2016, 01:12

13

Лучший ответ Сообщение было отмечено Shekanya как решение

Решение

Shekanya, У вас же там условия стоят hh<30 и т.д. везде false получается

Добавлено через 4 минуты
Shekanya, Можно еще так сделать

Javascript
1
2
var p=parseFloat(document.getElementById('field1').value)||0;
var h=parseFloat(document.getElementById('field2').value)||0;



1



Shekanya

0 / 0 / 0

Регистрация: 09.04.2016

Сообщений: 9

18.05.2016, 13:14

 [ТС]

14

Цитата
Сообщение от sad67man
Посмотреть сообщение

Shekanya, У вас же там условия стоят hh<30 и т.д. везде false получается

Добавлено через 4 минуты
Shekanya, Можно еще так сделать

Javascript
1
2
var p=parseFloat(document.getElementById('field1').value)||0;
var h=parseFloat(document.getElementById('field2').value)||0;

Понятно)
А вот этот вариант — вообще красота. С предыдущим костылем

Javascript
1
if(isNaN(hh))hh=(0);

пришлось также поставить еще вот это

Javascript
1
if(isNaN(py))py=(0);

и вот это

Javascript
1
if(isNaN(pye))pye=(0);

ибо при чекании чекбокса с пустыми полями NaN теперь перебЁг и на них)))

А

Javascript
1
2
var p=parseFloat(document.getElementById('field1').value)||0;
var h=parseFloat(document.getElementById('field2').value)||0;

— это пожалуй то что нужно — NaN более не проявляется нигде, и ни при каких движениях… Даже

Javascript
1
var nh=document.getElementById('chbox').value||0;

не понадобилось добавлять. Странно конечно)



0



2031 / 1115 / 566

Регистрация: 23.08.2015

Сообщений: 2,837

18.05.2016, 19:54

15

Shekanya, Здесь вот в чем дело
1*»» вернет 0, однако
1*»5.2asd» вернет NaN, в то время как
1*parseFloat(«») вернет NaN, а
1*parseFloat(«5.2asd») вернет 5.2
Вот такие дела.
Есть прием короткой записи перевода числа в строку как str*1, но он работает, если в строке содержатся только цифры, есть плюс, если строка пустая, то получится 0.
В противном случае, самый универсальный способ parseFloat(str)||0.
Именно поэтому у вас возникало NaN, только там, где вы использовали parseFloat. Так как type number.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

18.05.2016, 19:54

15

Сводка

Глобальное свойство NaN является значением, представляющим не-число (Not-A-Number).

Атрибуты свойства NaN
Записываемое нет
Перечисляемое нет
Настраиваемое нет

Интерактивный пример

Описание

NaN является свойством глобального объекта.

Начальным значением NaN является Not-A-Number (не-число) — то же самое значение, что и у Number.NaN. В современных браузерах NaN является ненастраиваемым и незаписываемым свойством. Даже когда это не так, избегайте его переопределения.

В программах NaN используется довольно редко. Это возвращаемое значение в ситуациях, когда математические (Math) функции не срабатывают должным образом (например, при вызове Math.sqrt(-1)) или когда функция, пытающаяся считать число из строки, терпит неудачу по причине того, что в строке не число (parseInt('blabla')).

Проверка на равенство NaN

NaN является неравным (посредством сравнения через ==, !=, ===, and !==) любому другому значению, включая другое значение NaN. Используйте Number.isNaN() или isNaN(), чтобы наиболее понятным образом определить является ли значение значением NaN. Или выполните само-сравнение: NaN, и только NaN, в результате такого сравнения будет неравным самому себе.

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true

function valueIsNaN(v) { return v !== v; }
valueIsNaN(1);          // false
valueIsNaN(NaN);        // true
valueIsNaN(Number.NaN); // true

Тем не менее, обратите внимание на разницу между функцией isNaN() и методом Number.isNaN(): первая вернёт true, если значение в настоящий момент является NaN, или если оно станет NaN после того, как преобразуется в число, в то время как последний вернёт true, только если текущим значением является NaN:

isNaN('hello world');        // true
Number.isNaN('hello world'); // false

Спецификации

Specification
ECMAScript Language Specification
# sec-value-properties-of-the-global-object-nan

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

Summary: in this tutorial, you’ll learn about the JavasScript NaN, how to check if a value is NaN, and how to handle NaN effectively.

Introduction to JavaScript NaN

JavaScript has the number type that allows you to represent numbers including integer and floating-point numbers. And JavaScript number has a special value called NaN, which stands for Not-aNumber.

The NaN is a property of the global object. The global object is the window object in web browsers:

window.NaN

Code language: JavaScript (javascript)

And the global object in Node.js.

global.NaN

Code language: CSS (css)

The NaN has the type number as shown in the following code:

console.log(typeof NaN); // number

Code language: JavaScript (javascript)

Checking if a value is NaN

JavaScript provides you with the global function isNaN() that returns true if its argument is NaN:

isNaN(valueToCheck)

Code language: JavaScript (javascript)

For example:

const result = 100 + 0 / 0; console.log(isNaN(result)); // true

Code language: JavaScript (javascript)

Why use NaN

JavaScript uses NaN as the result of a failed operation on numbers including:

  • Parsing numbers
  • Using undefined as an operand
  • Using NaN as an operand
  • Using indeterminate forms
  • Passing invalid arguments to a math function

Operations return NaN

1) Parsing numbers

In JavaScript, you can convert a numeric string to a number. For example:

const input = '100'; const num = parseInt(input); console.log(num); // 100

Code language: JavaScript (javascript)

If JavaScript cannot convert a string to a number, it returns NaN. In this case, NaN indicates that the parsing has failed. For example:

const input = 'X100'; const num = parseInt(input); console.log(num); // NaN

Code language: JavaScript (javascript)

It’s good practice to verify the parsing result using the isNaN function:

const input = 'X100'; const num = parseInt(input); // set num to 0 if parsing failed if (isNaN(num)) { num = 0; } console.log(num); // 0

Code language: JavaScript (javascript)

In this example, the parsing has failed therefore it returned NaN. The condition isNaN(num) is true so that the number is assigned to 0.

2) Use undefined as an operand

An expression that uses undefined as an operand returns NaN. For example:

console.log(undefined * 2); // NaN

Code language: JavaScript (javascript)

In practice, you’ll deal with undefined quite often. For example, when you access a non-existing property of an HTML element and use it in a calculation.

It’s good practice to avoid using undefined in calculation.

3) Using NaN as an operand

When an expression has the NaN, it always returns NaN. For example:

const result = 10 + 1 / NaN; console.log(result); // NaN

Code language: JavaScript (javascript)

4) Using indeterminate forms

When an arithmetical operation is in the indeterminate form, it returns NaN. For example:

const result = 10 + 0 / 0; console.log(result); // NaN

Code language: JavaScript (javascript)

5) Using invalid arguments of math functions

When a math function receives an invalid argument, it returns NaN. For example:

const result = Math.sqrt(-1); console.log(result); // NaN

Code language: JavaScript (javascript)

In this example, the Math.sqrt() that returns the square root of a number. Since it only accepts a non-negative number, passing -1 results in NaN.

Summary

  • NaN stands for Not-a-Number. It is a special value of the NaN property of the global object.
  • NaN indicates a failed operation on numbers.
  • Use isNaN() function to check if a value is NaN.

Was this tutorial helpful ?

Понравилась статья? Поделить с друзьями:
  • Nan ind c как исправить
  • Namine ritsu error
  • Nameresolutionfailure как исправить
  • Nameerror name x is not defined что означает эта ошибка
  • Nameerror name print is not defined как исправить