职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1521|回复: 9

NaN小结

[复制链接]
走失的猫咪 发表于 2011-9-3 10:14 | 显示全部楼层 |阅读模式
         当对不能转换成number类型的的字面量使用parseInt()或parseFloat()方法时,就会返回一个NaN,意思是Not a Number。
        NaN就像一个随机数一样,两个NaN是不相等的,只能通过isNaN()函数来判断。
        对以下类型的值使用isNaN()时会返回false,如1, "1", "", true, null, [1]等,即以上类型都可以转换为数字类型。
        对以下类型的值使用isNaN()则会返回true,如undefined, "dd", "true", [1, 2], Object等。
        另外,如果给isNaN()传递多个参数,如isNaN(1, 2, 3, "dd"),该函数只会判断第一个参数是否NaN,如isNaN(1, "d")返回的是false,而isNaN("d", 1)返回的则是true。

        如果大家对NaN还有更多的了解,希望能交流交流~

芷馨 发表于 2011-9-3 10:14 | 显示全部楼层
应该还有很多其他情况也会返回NaN吧,比如对非number类型做++或者--运算

秋秋 发表于 2011-9-3 10:14 | 显示全部楼层
libmw 写道
应该还有很多其他情况也会返回NaN吧,比如对非number类型做++或者--运算


恩,不过parseInt()和parseFloat()出现NaN相对比较频繁。

找不到我 发表于 2011-9-3 10:15 | 显示全部楼层
pnhuang 写道
        当对不能转换成number类型的的字面量使用parseInt()或parseFloat()方法时,就会返回一个NaN,意思是Not a Number。


parseInt()和parseFloat()不是说所有字面值不能转换成number的都返回NaN。
准确点应该说字面值不能转换成number并且不是以数字开头的值,才会返回NaN。
Javascript代码  
parseInt("123asdf23");  // 返回123   
parseFloat("12.123ajsfj123"); // 返回12.123  

parseInt("123asdf23");  // 返回123
parseFloat("12.123ajsfj123"); // 返回12.123


hxy 发表于 2011-9-3 10:15 | 显示全部楼层
对于字符串转为数字,我喜欢用 str * 1来表示,不知道返回的是什么值?

feiguo 发表于 2011-9-3 10:15 | 显示全部楼层


zui4yi1 写道
对于字符串转为数字,我喜欢用 str * 1来表示,不知道返回的是什么值?




大小: 5.8 KB
查看图片附件


话说我当年 发表于 2011-9-3 10:15 | 显示全部楼层
引用
另外,如果给isNaN()传递多个参数,如isNaN(1, 2, 3, "dd"),该函数只会判断第一个参数是否NaN,如isNaN(1, "d")返回的是false,而isNaN("d", 1)返回的则是true。


我感觉这个是因为javascript的function的特殊性吧,它本身只有一个参数,所以 逗号 后面的应该都不会被当做这个function的参数。

jinchang 发表于 2011-9-3 10:16 | 显示全部楼层
waitingmyself 写道


zui4yi1 写道
对于字符串转为数字,我喜欢用 str * 1来表示,不知道返回的是什么值?




多谢这位,给的真详细。

郁闷小男人 发表于 2011-9-3 10:16 | 显示全部楼层
"1a"*1和"a"*1的返回值都是NaN,比parseInt()好像更确切?

曾经的小孩 发表于 2011-9-3 10:16 | 显示全部楼层
基于google V8  (nodejs)

waitingmyself 写道


zui4yi1 写道
对于字符串转为数字,我喜欢用 str * 1来表示,不知道返回的是什么值?




您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-18 23:28 , Processed in 0.144686 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表