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+html5实现绘制圆环的方法
Jul 28 Javascript
AngularJS教程 ng-style 指令简单示例
Aug 03 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
Oct 26 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
Dec 08 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
Feb 15 Javascript
Vue 父子组件、组件间通信
Mar 08 Javascript
浅析vue.js数组的变异方法
Jun 30 Javascript
JS数组进阶示例【数组的几种函数用法】
Jan 16 Javascript
JavaScript实现简单的图片切换功能(实例代码)
Apr 10 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
May 16 Javascript
微信小程序使用前置摄像头拍照
Oct 22 Javascript
jQuery实现鼠标拖动图片功能
Mar 04 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中call_user_func_array()函数的用法演示
2012/02/05 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
javascript 写类方式之二
2009/07/05 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
python的几种开发工具介绍
2007/03/07 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
wxPython实现画图板
2020/08/27 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
Django在Model保存前记录日志实例
2020/05/14 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
介绍一下SQL Server里面的索引视图
2016/07/31 面试题
高中校园广播稿
2014/01/11 职场文书
酒店经理职责
2014/01/30 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
2014年工程工作总结
2014/11/25 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
求职自荐信怎么写
2015/03/04 职场文书
运动会5000米加油稿
2015/07/21 职场文书
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript
golang 在windows中设置环境变量的操作
2021/04/29 Golang
python入门学习关于for else的特殊特性讲解
2021/11/20 Python