JS 数字转换研究总结


Posted in Javascript onDecember 26, 2013

JS 转换数据为数字的方法有三类五种,包括:

•强制转换,JS 的基本数据类型都这以这样转换成对应的类型(Number(v))
•原生函数,这两个函数有不一样的结果(parseInt(v,radix)、parseFloat(v))
•隐式转换,在执行的时候 JS 会转换变量为对应类型(位计算,数学计算)
转换的原值也可以简单分为三类:对象、特殊值、字符串。

JS 中的特殊值包括以下几个。

•undefined,未定义,当变量声明但没赋值或者一个对象不存在的属性的值就是这个了。
•NaN/Infinity,这是两个顽固的“数字”(typeof == number),分别表示非数字和无限大的数。貌似没什么用,转换成数字失败的话,返回值基本是NaN。
•null,当成零值用的对象(typeof == object)。
•true/false,布尔值,表示真、假,等价于1/0。
对于字符串,根据内容还可以进行细分。根据 JS 数字表达式,可以分为合法和非法。合法的数字有几种不同的分类方法:

•符号:正号、负号、无符号
•进制:八进制、十进制、十六进制
•科学记数法
•小数、整数,以及小数的简写
根据上面的分类,我制作了一个 Demo,用来测试不同方法、数值转换后的结果。下面的截图是在 chrome 下的转换。

JS 数字转换研究总结

看结果只有位计算能把任何值转换为有限数(isFinite),数学计算和强制转换的结果是一样的。

特殊值的转换和原值以及转换方法都有关系。parseInt/parseFloat 全部转换失败,返回 NaN。

•NaN/undefined 用其它方法全转换成 NaN;
•Infinity 被 parseInt 转换成 NaN,剩下的方法不改变它的值;
•null/false/true 不能被 parseInt/parseFloat 转换,返回 NaN。
对字符串的转换分析主要看转换方法,但全部方法都不支持八进制表示的数字,而是当成对应的十进制数。

•逻辑计算转换除负十六进制数外的合法表达式,并舍去小数部分;不合法的表达式返回零。
•数学计算/Number 和逻辑计算类似,但不舍去小数;除空字符串外的不合法表达式返回 NaN。
•parseInt 也是只保留整数部分;但是对不合法的表达式,取字符串前面合法的整数(十进制、十六进制,不包括科学记数法)部分转换,没有则返回 NaN。
•parseFloat 和 parseInt 类似,不同的是能识别并保留小数部分,并且不支持十六进制数。

Javascript 相关文章推荐
js 代码优化点滴记录
Feb 19 Javascript
javascript针对DOM的应用分析(四)
Apr 15 Javascript
关于JS管理作用域的问题
Apr 10 Javascript
js中arguments,caller,callee,apply的用法小结
Jan 28 Javascript
Jquery注册事件实现方法
May 18 Javascript
Javascript实现单例模式
Jan 24 Javascript
javascript函数中的3个高级技巧
Sep 22 Javascript
javascript代码调试之console.log 用法图文详解
Sep 30 Javascript
浅谈JavaScript的自动垃圾收集机制
Dec 15 Javascript
Vue2.0如何发布项目实战
Jul 27 Javascript
JavaScript贪吃蛇小组件实例代码
Aug 20 Javascript
QT与javascript交互数据的实现
May 26 Javascript
利用jQuary实现文字浮动提示效果示例代码
Dec 26 #Javascript
js几秒以后倒计时跳转示例
Dec 26 #Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
Dec 26 #Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
Dec 26 #Javascript
jquery1.9 下检测浏览器类型和版本的方法
Dec 26 #Javascript
jQuery aminate方法定位到页面具体位置
Dec 26 #Javascript
javascript创建数组之联合数组的使用方法示例
Dec 26 #Javascript
You might like
Wordpress php 分页代码
2009/10/21 PHP
php 文章调用类代码
2011/08/11 PHP
功能强大的php文件上传类
2016/08/29 PHP
PHP实现的操作数组类库定义与用法示例
2019/05/24 PHP
js 判断脚本加载完毕的代码
2011/07/13 Javascript
jquery获取当前点击对象的value方法
2014/02/28 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
Redux实现组合计数器的示例代码
2018/07/04 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
HTML5标签小集
2011/08/02 HTML / CSS
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
高分子材料与工程专业个人求职信
2013/12/15 职场文书
应届毕业生个人求职自荐信
2014/01/06 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
本科生自荐信
2014/06/18 职场文书
大专毕业生求职信
2014/07/05 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python