📜  isNaN (1)

📅  最后修改于: 2023-12-03 14:42:10.964000             🧑  作者: Mango

isNaN 函数介绍

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