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 相关文章推荐
可输入的下拉框
Jun 19 Javascript
DIV外区域Click后关闭DIV的实现代码
Dec 21 Javascript
JS实现的省份级联实例代码
Jun 24 Javascript
jquery实现图片裁剪思路及实现
Aug 16 Javascript
jQuery Mobile 导航栏代码
Nov 01 Javascript
JavaScript中判断函数、变量是否存在
Jun 10 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
Mar 30 Javascript
JavaScript中this的用法实例分析
Dec 19 Javascript
详解如何更好的使用module vuex
Mar 27 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
Apr 15 Javascript
JavaScript实现简单随机点名器
Nov 21 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
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
jQuery实现本地存储
2020/12/22 jQuery
使用jquery实现轮播图效果
2021/01/02 jQuery
Python、Javascript中的闭包比较
2015/02/04 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
分层教学实施方案
2014/03/19 职场文书
如何写早恋检讨书
2014/09/10 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
法定代表人证明书
2014/11/28 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
团委副书记工作总结
2015/08/14 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL