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 相关文章推荐
javascript编程起步(第一课)
Jan 10 Javascript
JS动画效果代码3
Apr 03 Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
Jan 01 Javascript
jquery和css3实现的炫酷时尚的菜单导航
Sep 01 Javascript
浅谈Javascript数组索引
Jul 29 Javascript
对于jQuery性能的一些优化建议
Aug 13 Javascript
JavaScript实现上下浮动的窗口效果代码
Oct 12 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
Oct 31 Javascript
AngularJS身份验证的方法
Feb 17 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
Jul 14 Javascript
Angular如何在应用初始化时运行代码详解
Jun 11 Javascript
vue实现导航菜单和编辑文本的示例代码
Jul 04 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
人族 TERRAN 概述
2020/03/14 星际争霸
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
Python对切片命名的实现方法
2018/10/16 Python
Django 开发环境配置过程详解
2019/07/18 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
Python远程方法调用实现过程解析
2020/07/28 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
工业学校毕业生自荐信范文
2014/01/03 职场文书
淘宝活动总结范文
2014/06/26 职场文书
文明班级申报材料
2014/12/24 职场文书
客户答谢会致辞
2015/07/30 职场文书
教务处教学工作总结
2015/08/10 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
教师听课学习心得体会
2016/01/15 职场文书
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL