📅  最后修改于: 2023-12-03 14:42:10.964000             🧑  作者: Mango
isNaN
是 JavaScript 中的一个全局函数,用于判断传入的参数是否为非数字(NaN)。NaN 是一个特殊的数字,代表着 Not a Number。
isNaN(value)
其中,value
可以是任何类型的数据,包括数字、字符串、布尔值等。
如果传入的参数是 NaN,则返回 true
,否则返回 false
。需要注意的是,如果传入的参数是一个非数字类型的数据,isNaN
函数会先尝试将其转换为数字。如果无法转换,则返回 true
。
isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN(true); // false (true 被转换成了数字 1)
isNaN(false); // false(false 被转换成了数字 0)
isNaN("10"); // false(字符串 "10" 被转换成了数字 10)
isNaN("10.2"); // false(字符串 "10.2" 被转换成了数字 10.2)
isNaN("foo"); // true(无法将字符串 "foo" 转换成数字)
isNaN(new Date()); // false(日期对象会被转换成毫秒数)
在某些情况下,使用 isNaN
函数会带来一些问题。
例如:
isNaN("0.0"); // false("0.0" 被转换成了数字 0)
isNaN("0"); // false("0" 被转换成了数字 0)
isNaN(false); // false(false 被转换成了数字 0)
isNaN(""); // false(空字符串被转换成数字 0)
isNaN(" "); // false(全是空格的字符串被转换成数字 0)
isNaN(null); // false(null 被转换成数字 0)
isNaN([]); // false(空数组被转换成数字 0)
isNaN([1, 2, 3]); // true (非空数组无法被转换成数字)
isNaN([true, false]); // true(数组中的元素无法被转换成数字)
isNaN(function(){}); // true(函数无法被转换成数字)
isNaN({}); // true(空对象无法被转换成数字)
isNaN({a:1}); // true(非空对象无法被转换成数字)
在实际开发中,建议使用 Number.isNaN
来判断一个值是否为 NaN。
Number.isNaN(NaN); // true
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN("foo"); // false