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 IE 浏览器判定代码
Mar 21 Javascript
Jquery post传递数组方法实现思路及代码
Apr 28 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
Sep 06 Javascript
分享9点个人认为比较重要的javascript 编程技巧
Apr 27 Javascript
js下载文件并修改文件名
May 08 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
Jun 13 Javascript
前端MVVM框架解析之双向绑定
Jan 24 Javascript
详解基于mpvue的小程序markdown适配解决方案
May 08 Javascript
vue双向绑定及观察者模式详解
Mar 19 Javascript
vue 实现特定条件下绑定事件
Nov 09 Javascript
原生JavaScript之es6中Class的用法分析
Feb 23 Javascript
js this 绑定机制深入详解
Apr 30 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
网页上facebook分享功能具体实现
2014/01/26 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
python socket 超时设置 errno 10054
2014/07/01 Python
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
python文件写入实例分析
2015/04/08 Python
python遍历数组的方法小结
2015/04/30 Python
Python 探针的实现原理
2016/04/23 Python
Python探索之修改Python搜索路径
2017/10/25 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
浅谈django 重载str 方法
2020/05/19 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
大四学年自我鉴定
2013/11/13 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
具结保证书范本
2015/05/11 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
运动会宣传稿50字
2015/07/23 职场文书
超外差式晶体管收音机的组装与统调
2021/04/22 无线电
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android