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 相关文章推荐
jquery调用wcf并展示出数据的方法
Jul 07 Javascript
js变量以及其作用域详解
Jul 18 Javascript
js动态在form上插入enctype=multipart/form-data的问题
May 24 Javascript
Jquery实现弹出层分享微博插件具备动画效果
Apr 03 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
Nov 19 Javascript
利用Keydown事件阻止用户输入实现代码
Mar 11 Javascript
Javascript实现的Map集合工具类完整实例
Jul 31 Javascript
js数组常见操作及数组与字符串相互转化实例详解
Nov 10 Javascript
bootstrap警告框使用方法解析
Jan 13 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
Mar 09 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
Sep 28 Javascript
jQuery实现简单全选框
Sep 13 jQuery
利用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 URL编码解码函数代码
2009/03/10 PHP
PHP高自定义性安全验证码代码
2011/11/27 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
布同自制Python函数帮助查询小工具
2011/03/13 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python 对象中的数据类型
2017/05/13 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
django富文本编辑器的实现示例
2019/04/10 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
编写strcpy函数
2014/06/24 面试题
经理管理专业毕业自荐书范文
2014/02/12 职场文书
大学生操行评语大全
2014/12/31 职场文书
教师节祝酒词
2015/08/11 职场文书
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫