Метод isNaN
пытается преобразовать переданный параметр в число. Если параметр не может быть преобразован, возвращает true
, иначе возвращает false
.
Эта функция полезна, так как значение NaN
не может быть проверено операторами эквивалентности.
Значение x == NaN
и x === NaN
всегда false
для любого x
, даже если x=NaN
.
1 == NaN // false
NaN == NaN // false
isNaN(NaN) // true
isNaN("12") // false
а NaN это строковое значение или какое? как на него проверять без функции isNaN?
можно так обратиться if (val == "NaN") или только if (val == NaN) ?
NaN - это специальное значение. Без функции isNaN проверить нельзя, == не сработает.
самая банальная проверка на NaN это: NaN == NaN всегда будет false
т.е. переменная не равна сама себе
var a = NaN;
isNaN(a) // true
a!=a // true
лучше не пользоваться isNaN, поскольку передаваемое в функцию значение, не всегда будет преобразовываться в число:
var a = 'test';
isNaN('test') // true !!!!
a!=a // false
Идиот. NaN - не число
NaN -- число (number) -- читай доку.
typeof NaN -> "number"
Зачем тогда вообще эта функция нужна, если она строки считает NaN'ами?
Спасибо! Очень полезный сайт!
Очень нужный сайт! Никогда не догадался бы, что объязательно нужно делать так!
isNaN('') будет false
isNaN(null) также false
кэп?
Проверить переменную x на NaN можно так: x !== x. Это выражение вернет true тогда и только тогда когда x есть NaN
единственный верный вариант, своего рода костыль
isMyNaN(undefined)
false
isMyNaN('e')
false
isMyNaN('1')
false
isMyNaN(1)
false
isMyNaN(null)
false
isMyNaN(true)
false
неверно, оно вернёт false если значение === самому себе, то есть любой символ, любая строка и любое число. Даже true вернёт false
Такая реализация более корректна - по крайней мере, отрабатывает в точности как NaN
function isMyNaN(value) {
if (value !== null) {
return parseFloat(value) !== parseFloat(value);
}
else return false;
}
isNaN(undefined)
true
isMyNaN(undefined)
true
isNaN('1')
false
isMyNaN('1')
false
isNaN(null)
false
isMyNaN(null)
false
isNaN('e')
true
isMyNaN('e')
true
isNaN(undefined); //true
действительно
isNaN(undefined); //true
И Как сравнить теперь undefined и Nan?
isNaN("Hi") // true
Если проверить любую строку, вернется true
Не любую
isNaN("12") // false
isNaN("0x12") // false
isNaN("x12") // true
isNaN("12x") // true
Если вопрос в корректности использования isNaN(), то...
function strIsNumber( s )
{
return s != null && s.trim() != '' && !isNaN( Number( s ) );
}
Возвращает true, если значение s может быть преобразовано в число, иначе - false (кэп)
Тоже костыль, конечно...
Но, по крайней мере для таких значений s, как undefined, null и 'test' (см. выше) отработало корректно.
Как задать в функции отсутствие аргументов?
Просто так. function foo()
Метод isNaN пытается преобразовать переданный параметр в число. Если параметр не может быть преобразован, возвращает true, иначе возвращает false.
То есть получается если isNAN(число) - будет False? Может наоборот все таки?
Спасибо вам за разъяснение. Мне пришлось использовать isNaN для моего инструмента Downloader, и это руководство мне пригодилось.
The graphics in basket random are very cute and friendly to young people.
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.