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 学习笔记 防止发生命名冲突
Jul 30 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 Javascript
简单谈谈javascript Date类型
Sep 06 Javascript
JavaScript电子时钟倒计时第二款
Jan 10 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 Javascript
JS实现的简单表单验证功能示例
Oct 13 Javascript
jquery中有哪些api jQuery主要API
Nov 20 jQuery
Angular实现的日程表功能【可添加及隐藏显示内容】
Dec 27 Javascript
使用JSON格式提交数据到服务端的实例代码
Apr 01 Javascript
javascript实现计算指定范围内的质数示例
Dec 29 Javascript
浅谈JavaScript面向对象--继承
Mar 20 Javascript
ES6扩展运算符和rest运算符用法实例分析
May 23 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输入流php://input介绍
2012/09/18 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
javascript定义函数的方法
2010/12/06 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
2017/07/13 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
python自然语言编码转换模块codecs介绍
2015/04/08 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
2019/04/30 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
硕士生工作推荐信
2014/03/07 职场文书
经典团队口号大全
2014/06/21 职场文书
出租房屋协议书
2014/09/14 职场文书
2015年消防工作总结
2015/04/24 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python