js中如何判斷一個變量是否是NaN?

NaN(不是一個數字且數據類型爲number,另外NaN != NaN)是執行數學運算沒有成功,返回失敗的結果。可是這個結果仍然是數字類型。瀏覽器

var a = "str"; var b = 2; var c = a/b;字符串

console.log(isNaN(a)); // true console.log(isNaN(b)); // false console.log(isNaN(c)); // true數學

這個例子中,a的結果是true,b是false,c是true。對於isNaN來講,它是判斷一個值是否是NaN,若是是則返回true。可是a是一個字符串,用isNaN判斷這個變量a的時候仍是會返回true。因此判斷一個變量是否爲NaN不能使用isNaN()這個方法,能夠用如下方法判斷。io

1.根據NaN的定義判斷。 var a = "str"; var b = 2; var c = a/b;console

function isNaN(n) { if(typeof(n) === "number" && isNaN(n)) { return true; } else { return false; } } console.log(Number.isNaN(a)); // false console.log(Number.isNaN(b)); // false console.log(Number.isNaN(c)); // truefunction

2.防止在老版本的瀏覽器不支持isNaN方法。 var a = "str"; var b = 2; var c = a/b;class

if(!Number.isNaN) { Number.isNaN = function(n) { return( typeof(n) === "number" && window.isNaN(n)); } } console.log(Number.isNaN(a)); // false console.log(Number.isNaN(b)); // false變量

3.利用NaN是惟一一個不等於任何自身的特色。 var a = "str"; var b = 2; var c = a/b;數據類型

function isNaN(n) { if(n !== n) { return true; } else { return false; } } console.log(isNaN(a)); // false console.log(isNaN(b)); // false console.log(isNaN(c)); // true方法

4.利用ES6中提供的Object.is()方法。 var a = "str"; var b = 2; var c = a/b;

console.log(Object.is(a, NaN)); // false console.log(Object.is(b, NaN)); // false console.log(Object.is(c, NaN)); // true

相關文章
相關標籤/搜索