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 相关文章推荐
自动完成JS类(纯JS, Ajax模式)
Mar 12 Javascript
javascript取消文本选定的实现代码
Nov 14 Javascript
jquery触发a标签跳转事件示例代码
Jul 21 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
Oct 20 Javascript
JS中三目运算符和if else的区别分析与示例
Nov 21 Javascript
AngularJS延迟加载html template
Jul 27 Javascript
原生JS实现幻灯片
Feb 22 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
Aug 21 Javascript
详解vue路由篇(动态路由、路由嵌套)
Jan 27 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
Mar 16 Javascript
解决vue组件销毁之后计时器继续执行的问题
Jul 21 Javascript
JavaScript canvas实现雨滴特效
Jan 10 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实现批量查询清除一句话后门的代码
2008/01/20 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
更改Python命令行交互提示符的方法
2015/01/14 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
python连接PostgreSQL过程解析
2020/02/09 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
机械系大学毕业生推荐信
2013/11/27 职场文书
4s店机修工岗位职责
2013/12/20 职场文书
即兴演讲稿
2014/01/04 职场文书
一年级语文教学反思
2014/02/13 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
读书活动总结范文
2014/04/26 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书