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中获取元素的几种方式小结
Jul 05 Javascript
如何用ajax来创建一个XMLHttpRequest对象
Dec 10 Javascript
浅析JQuery UI Dialog的样式设置问题
Dec 18 Javascript
深入理解逻辑表达式的用法 与或非的用法
Jun 06 Javascript
微信小程序 WebSocket详解及应用
Jan 21 Javascript
很棒的vue弹窗组件
May 24 Javascript
深入浅析Vue.js中 computed和methods不同机制
Mar 22 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
Aug 24 Javascript
javascript中的event loop事件循环详解
Dec 14 Javascript
layui数据表格跨行自动合并的例子
Sep 02 Javascript
vue 弹出遮罩层样式实例
Jul 22 Javascript
AudioContext 实现音频可视化(web技术分享)
Feb 24 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
php中的动态调用实例分析
2015/01/07 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
2015/03/19 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
joomla组件开发入门教程
2016/05/04 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
简述Python中的面向对象编程的概念
2015/04/27 Python
Python 2与Python 3版本和编码的对比
2017/02/14 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
如何通过python检查文件是否被占用
2020/12/18 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
中文专业毕业生自荐信
2013/10/28 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
班级旅游计划书
2014/05/03 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
寒假致家长的一封信
2015/10/10 职场文书
Python图片检索之以图搜图
2021/05/31 Python