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 Validate 正则表达式实用验证代码大全
Aug 23 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
Nov 21 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
Aug 21 Javascript
全面解析标签页的切换方式
Aug 21 Javascript
JavaScript 计算笛卡尔积实例详解
Dec 02 Javascript
Angular.JS去掉访问路径URL中的#号详解
Mar 30 Javascript
原生JS实现九宫格抽奖效果
Apr 01 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
Aug 28 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
详解vue开发中调用微信jssdk的问题
Apr 16 Javascript
vue集成kindeditor富文本的实现示例代码
Jun 07 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 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版国家代码、缩写查询函数代码
2011/08/14 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
js中style.display=""无效的解决方法
2014/10/30 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
软件测试企业面试试卷
2016/07/13 面试题
中学生在校期间的自我评价分享
2013/11/13 职场文书
军训自我鉴定
2014/01/22 职场文书
生产厂长岗位职责
2014/02/21 职场文书
中学生寄语大全
2014/04/03 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
Java8中接口的新特性使用指南
2021/11/01 Java/Android