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()這個方法,可以用以下方法判斷。

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

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)); // true

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM