JS扫盲:你不知道的isNaN()
类型分类
- 原始类型:Number,String,Boolean,null,undefined,symbol(ES6新添加)
- 引用类型:object(数组,Data,正则…),function
原始类型
number
- isNaN 用来判断 NaN,先将参数尝试强制转化成数字,返回boolean
基本概念:isNaN() 函数用来确定一个值能否为NaN.
基本示例:
//1isNaN(NaN); // true//2isNaN(true); // falseisNaN(false); // true//3isNaN(37); // falseisNaN('37'); // false//4isNaN(null); // falseisNaN(undefined); // true//5isNaN({}); // trueisNaN({name: 'LinYY'}); // true思考:上面 4 中的结果为什么 null 是 false 呢?undefined 结果是 true?object 是false? 解答这个起因先看几个相关的示例
原始类型
基本类型
- 字符
isNaN('12') // Number('12') > 12 -> falseisNaN('12,23') // ==>Number('12, 23') -> 12,23 -> true- 数字
isNaN(12) // Number(12) > 12 -> false引用类型
- 对象
let o = {}isNaN(o) // ==> trueo.toString() // ==> "[object Object]", Number("[object Object]") ==> true- 数组
let arr = [12, 23]isNaN(arr) // ==> truearr.toString() // ==> "12, 23", 所以 Number("12, 23") ==> true- data
isNaN(new Date()); // falseisNaN(new Date().toString()); // true解释上面问题
- null
isNaN(null) // false, 由于 Number(null) ==> 0- undefined
isNaN(undefined) // true。由于 Number(undefined) ==> NaN- 引用类型
isNaN('') // false,由于 Number('') -> 0。//同理:isNaN([]) // false,由于 [].toString() ->'' ,Number('') -> 0isNaN([12, 23]) // true 由于[12, 23].toString()->"[object Object]", Number("[object Object]") ==> true总结:isNaN() 使用分两种情况
- 引用数据类型 object, 先通过 toString 方法转化成字符串,再通过 Number 方法转化成数字类型
- 其余基本类型 直接使用 Number 方法转化成数字类型
思考,怎样判断一个数能否为有效数字?
- 这样吗?
if(isNaN(param) == NaN){ console.log('不是有效数字') }显著上面的写法是错误的,由于 NaN == NaN 也是不相等的,所以上面代码永远不会执行
- 正确使用方法
if(isNaN(param)){ console.log('不是有效数字') }文章地址:
掘金
博客地址 体验效果更好。
源码地址 欢迎start (issue),以后会不断的升级内容
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » JS扫盲:你不知道的isNaN()
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » JS扫盲:你不知道的isNaN()