微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

isnan javascript

javascript 中的 isNaN 函数可以判断其参数是否是一个非数字值。如果一个值属于数字类型,但是不是一个合法数值,例如 NaN(Not a Number)、Infinity(无穷大)等,则返回 true,否则返回 false。 实际上,isNaN 函数内部通过使用 Number() 函数将输入的参数转换为数字类型。例如:isNaN("5") 会被转换为 isNaN(5)。 但是,在某些情况下,使用 isNaN 函数可能会产生一些令人惊讶的结果,这是由于其执行的隐式类型转换过程的性质所决定的。下面我们来看一些例子。
console.log(isNaN("hello"));    // true
console.log(isNaN("2005/01/02"));    // true
console.log(isNaN(undefined));    // true
console.log(isNaN({}));    // true
console.log(isNaN([]));    // false
console.log(isNaN([2]));    // false
console.log(isNaN("1e100"));    // false
console.log(isNaN(null));    // false
console.log(isNaN(true));    // false
上面的代码意味着:isNaN 是一种弱类型的运算符,因此可以与任何类型的值一起使用,并且它会尝试将参数转换为数字,如果不能转换则返回 true,否则返回 false。 使用 isNaN 函数进行数字验证时,必须注意两种特殊情况:Infinity 和 NaN。 首先,Infinity(正无穷大)是数学中定义的概念,它表示比任何实数都大的实数。在 javascript 中,可以使用 Number.POSITIVE_INFINITY 或直接输入 Infinity 来表示正无穷大。

isnan javascript

console.log(isNaN(Infinity));    // false
console.log(isNaN(Number.POSITIVE_INFINITY));    // false
console.log(isNaN(-Infinity));    // false
console.log(isNaN(Number.NEGATIVE_INFINITY));    // false
在这种情况下,isNaN 将不会被认为是 NaN,因为 Infinity 不属于非数字值。 其次,对于 NaN 值的情况,我们不能使用 isNaN 函数来检测它,因为isNaN(NaN) 将返回 true。相反,我们可以使用全局函数 parseInt 和 parseFloat 来检测 NaN 值。有趣的是,NaN 与任何值都不相等,包括自己。
console.log(isNaN(NaN));    // true
console.log(isNaN(parseInt("hello")));    // true
console.log(isNaN(parseFloat("hello")));    // true
console.log(NaN == NaN);   // false
实际上,通过 JavaScript 中的 isNaN 函数来检测非数字的值并不是一个方法。相反,推荐使用 ES6 引入的 Number.isNaN() 函数
console.log(Number.isNaN(NaN));    // true
console.log(Number.isNaN(parseInt("hello")));    // true
console.log(Number.isNaN(parseFloat("hello")));    // true
console.log(Number.isNaN("hello"));    // false
console.log(Number.isNaN(Infinity));    // false
console.log(Number.isNaN("2005/01/02"));    // false
console.log(Number.isNaN(undefined));    // false
console.log(Number.isNaN({}));    // false
console.log(Number.isNaN([]));    // false
与 isNaN 函数不同,Number.isNaN 函数不会对值进行类型转换,只有当参数是 NaN 时才返回 true。 在实践中,我们应该尽量避免使用 isNaN 函数来检测 NaN 值,因为它会产生令人惊讶的结果。相反,使用 Number.isNaN() 函数是一种更加明确和有效的方法。 最后,我们在编写 JavaScript 代码时应该注重类型的变量判断和数据类型的转换,避免一些我们不必要的错误。下面给大家列举一些可能的类型判断方法
// instanceof,属性检查
let str = "hello world";
console.log(str instanceof String);    // false

// typeof
console.log(typeof "hello");    // string
console.log(typeof 123);    // number
console.log(typeof undefined);    // undefined
console.log(typeof null);    // object
console.log(typeof NaN);    // number

// isArray
console.log(Array.isArray([]));    // true
console.log(Array.isArray({}));    // false
在实际编写 JavaScript 代码时,我们应该灵活运用正确的类型判断方法和数据类型转换方法,避免某些意想不到的结果。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐