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 array 数组详解
Mar 22 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
Jan 25 Javascript
探讨JavaScript中的Rest参数和参数默认值
Jul 29 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
Dec 31 Javascript
浅析JavaScript作用域链、执行上下文与闭包
Feb 01 Javascript
js实现对table的增加行和删除行的操作方法
Oct 13 Javascript
javascript匀速动画和缓冲动画详解
Oct 20 Javascript
JavaScript函数基础详解
Feb 03 Javascript
JS按条件 serialize() 对应标签的使用方法
Jul 24 Javascript
老生常谈js中的MVC
Jul 25 Javascript
vue的传参方式汇总和router使用技巧
May 22 Javascript
微信小程序云开发使用方法新手初体验
May 16 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
长波知识介绍
2021/03/01 无线电
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
Memcache 在PHP中的使用技巧
2010/02/08 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
ECMAScript6--解构
2017/03/30 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
Python写入CSV文件的方法
2015/07/08 Python
Django用户认证系统 User对象解析
2019/08/02 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
python要安装在哪个盘
2020/06/15 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
文职个人求职信范文
2013/09/23 职场文书
智能电子应届生求职信
2013/11/10 职场文书
三好学生评语大全
2014/12/29 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
建房合同协议书
2016/03/21 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python