[code小心得]JS NaN 小記錄

大家好

在之前有提過JS的NaN  和 JS 強制轉型的狀況 所以會有 === 的使用時候


但在以下 請況

var x =NaN;
x === NaN;   //false

JS有提供一個API  isNaN 但是這個有點不太可靠(因為它也會進行隱含的強制轉型)

所以會有下列情況

isNaN("foo")                            //true

isNaN("undefined")                   //true

isNaN("{}")                               //true

isNaN({ valueOf: "foo" })          //true

但有個語法可被用來測試NaN  因為NaN是 JS當中 唯一被視為與自己不相等的值,所以可以測試是否不相等於自己

var a = NaN
a !== a;          //true

var b = "foo"  
b !== b;          //false

var c = undefined;
c !== c;           //false

var d = {};
d !==d            //false

var e = { valueOf: "foo" };
e !== e;           //false


你也可以寫成如下的工具函式

function isReallyNaN(x) {
      return  x != x;
}

以上   感謝收看

留言