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 来表示正无穷大。
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] 举报,一经查实,本站将立刻删除。