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的不规则矩形的排列实现代码
Apr 16 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
May 31 Javascript
JavaScript实现多维数组的方法
Nov 20 Javascript
Javascript中引用示例介绍
Feb 21 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
Feb 28 Javascript
详解JavaScript对象类型
Jun 16 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
Sep 10 Javascript
JS随机排序数组实现方法分析
Oct 11 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
Nov 26 Javascript
微信小程序云开发实现增删改查功能
May 17 Javascript
koa2+vue实现登陆及登录状态判断
Aug 15 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
Feb 25 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/07 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
如何离线执行php任务
2017/02/21 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
js 调整select 位置的函数
2008/02/21 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
原生JS实现记忆翻牌游戏
2020/07/31 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
仅利用30行Python代码来展示X算法
2015/04/01 Python
解析Python中的二进制位运算符
2015/05/13 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
python设置值及NaN值处理方法
2018/07/03 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
Python实现手势识别
2020/10/21 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
美术专业学生个人自我评价
2013/09/19 职场文书
初中校园之声广播稿
2014/01/15 职场文书
主要负责人任命书
2014/06/06 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
人力资源部岗位职责
2015/02/11 职场文书
JavaScript 实现页面滚动动画
2021/04/24 Javascript
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python