Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   isNaN(x) === isNaN(+x) (https://javascript.ru/forum/misc/9628-isnan-x-%3D%3D%3D-isnan-x.html)

Riim 28.05.2010 11:50

isNaN(x) === isNaN(+x)
 
isNaN(x) === isNaN(+x)

Всегда true будет?

Kolyaj 28.05.2010 11:53

Очевидно, да.

Riim 28.05.2010 12:00

Что-то я засомневался на секунду. По крайней мере, нигде не видел утверждения, что isNaN и Number используют один и тот же алгоритм для распознавания чисел из строк.

Kolyaj 28.05.2010 12:03

isNaN принимает Number, поэтому всё, что не число, приводится к нему. + делает то же самое.

Riim 28.05.2010 12:08

Цитата:

Сообщение от Kolyaj
всё, что не число, приводится к нему

логично звучит. Спасибо.

x-yuri 29.05.2010 00:07

ну можно привести следующий феерический пример
var a = {valueOf: function(){
    if( ! this.i )
        this.i = 0;
    this.i++;
    return   this.i%2   ? NaN   : 1;
}}

alert(isNaN(a) === isNaN(+a));

а дальше, либо забить, либо сказать, зачем это нужно

subzey 30.05.2010 02:45

x-yuri,
:D

Против лома нет приема, окромя другого лома:
window.isNaN = function(){return false}

Kolyaj 30.05.2010 09:55

Цитата:

Сообщение от subzey
окромя другого лома

window.isNaN = function() { return Math.random() > 0.5; }

exec 30.05.2010 10:06

Цитата:

Сообщение от subzey (Сообщение 57047)
x-yuri,
:D

Против лома нет приема, окромя другого лома:
window.isNaN = function(){return false}

window.isNaN = function(){return false}
alert(isNaN('2') === isNaN(+'2'));

Gvozd 30.05.2010 11:08

Цитата:

Сообщение от Kolyaj
Math.random()

зачем нам элемент случайности?
надо чтобы наверняка
window.isNaN = function(){return NaN}
alert(isNaN('2') === isNaN(+'2'));


Часовой пояс GMT +3, время: 02:55.