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调用Session的实现代码
Oct 29 Javascript
动态创建script标签实现跨域资源访问的方法介绍
Feb 28 Javascript
jquery修改网页背景颜色通过css方法实现
Jun 06 Javascript
jquery实现显示已选用户
Jul 21 Javascript
js判断文本框剩余可输入字数的方法
Feb 04 Javascript
jQuery文字提示与图片提示效果实现方法
Jul 04 Javascript
JavaScript中的事件委托及好处
Jul 12 Javascript
基于javascript实现的快速排序
Dec 02 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
Apr 16 Javascript
bootstrap tooltips在 angularJS中的使用方法
Apr 10 Javascript
async/await让异步操作同步执行的方法详解
Nov 01 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笔记之:基于面向对象设计的详解
2013/05/14 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
成人大专自我鉴定范文
2013/10/19 职场文书
广告创意求职信
2014/03/17 职场文书
离婚协议书格式
2014/11/21 职场文书
2016党校培训心得体会
2016/01/07 职场文书
Python中rapidjson参数校验实现
2021/07/25 Python