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 新手24条实用建议[TUTS+]
Jun 21 Javascript
在次封装easyui-Dialog插件实现代码
Nov 14 Javascript
基于jquery自定义图片热区效果
Jul 21 Javascript
JavaScript的递归之递归与循环示例介绍
Aug 05 Javascript
类似php的js数组的in_array函数自定义方法
Dec 27 Javascript
简述Jquery与DOM对象
Jul 10 Javascript
jQuery的bind()方法使用详解
Jul 15 Javascript
JavaScript核心语法总结(推荐)
Jun 02 Javascript
利用iscroll4实现轮播图效果实例代码
Jan 11 Javascript
Vue.js开发环境快速搭建教程
Mar 17 Javascript
微信小程序 腾讯地图显示偏差问题解决
Jul 27 Javascript
谈谈node.js中的模块系统
Sep 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
PHP7新功能总结
2019/04/14 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
发现的以前不知道的函数
2006/09/19 Javascript
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
jQuery实现的类flash菜单效果代码
2010/05/17 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
python练习程序批量修改文件名
2014/01/16 Python
python设置环境变量的作用和实例
2019/07/09 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
python实现一个猜拳游戏
2020/04/05 Python
python输入中文的实例方法
2020/09/14 Python
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
教师党员批评与自我批评发言稿
2014/10/15 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
大学辅导员述职报告
2015/01/10 职场文书
成本会计岗位职责
2015/02/03 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python