javascript不同类型数据之间的运算的转换方法


Posted in Javascript onFebruary 13, 2014

js中不同类型的基础数据之间可以转换,这种转换是有规则可寻的,并非随意的随机的。在js中有5种基础类型数据:string、number、boolean、null、undefined,其中,常用于计算或者比较的类型是前面三种。

基础数据之间的转换

其它类型转化数字
原始数据类型 目标类型Number
undefined NaN
null 0
false 0
true 1
数字串 相应的数字
不能转化的字符串 NaN
其它类型转化为字符串
原始数据类型 目标类型String
undefined undefined
null null
false false
true true
数字 数字字符串

 

不同类型的基础数据之间的加法,数据先转换为number,然后转换为string(如果有string类型数据参与运算)

null + undefined // 0+NaN null + false // 0+0 
1 + true // 1+1 
1 + '1' //'11';数字与字符串相加结果是字符串 
1 + 2 + '3'  //'33';(1+2)的结果然后与'3'相加;这里要把每一步加法单独拆开来看,否则变成和下面一样的结果了. 
1 + (2 +'3') //'123';先运算2+'3',然后1+'23' 
's' + null //'snull' 
's' + undefined // 'sundefined' 
's' + true //'strue' 
1 + true + undefined + 's' // 1+1+NaN+'s'=2+NaN+'s'=NaN+'s'=NaNs

对象参与加减法运算

对象参与基础类型数据运算,先转化为基础类型。先调用其valueOf方法,如果返回的不是基础类型,再调用其toString方法,如果返回的还不是基础类型,则抛出错误。但是,Date数据刚好相反

//为了便于观察重写Date的toString方法和valueOf方法 Date.prototype.toString = function(){ 
    return 1; 
} 
Date.prototype.valueOf = function(){ 
    return 2; 
} 
var a = new Date, 
    b = new Date; 
a + b; // 调用toString,1 + 1,结果是2 
// 再重写toString方法 
Date.prototype.toString = function(){ 
    return {}; 
} 
var c = new Date, 
    d = new Date; 
c + d; // 调用toString方法返回的不是基础类型,再调用valueOf,2 + 2,结果是4 
// 再重写valueOf方法 
Date.prototype.valueOf = function(){ 
    return {}; 
} 
var e = new Date, 
    f = new Date; 
e + f; // 报错

把上面的例子换成Object或者其他类型能得到相应的结果,不过是先调用valueOf,再调用toString。

'+'号的神奇功效

数据前有加号‘+',可以让字符串转化为数字

+'1'+1 // 2 +'s'+2 // NaN

注:第一次,格式不好,纰漏多,欢迎大家拍砖
Javascript 相关文章推荐
HTTP状态代码以及定义(解释)
Feb 02 Javascript
写出更好的JavaScript程序之undefined篇(中)
Nov 23 Javascript
js 复制或插入Html的实现方法小结
May 19 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
Aug 27 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
Mar 24 Javascript
javascript验证只能输入数字和一个小数点示例
Oct 21 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
Dec 28 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 jQuery
Vue基本使用之对象提供的属性功能
Apr 30 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
Aug 21 Javascript
javascript实现倒计时提示框
Mar 02 Javascript
js清理Word格式示例代码
Feb 13 #Javascript
Js与下拉列表处理问题解决
Feb 13 #Javascript
js加载读取内容及显示与隐藏div示例
Feb 13 #Javascript
input禁止键盘及中文输入,但可以点击
Feb 13 #Javascript
JS实现将人民币金额转换为大写的示例代码
Feb 13 #Javascript
jquery清空表单数据示例分享
Feb 13 #Javascript
jquery提交form表单时禁止重复提交的方法
Feb 13 #Javascript
You might like
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php后门URL的防范
2013/11/12 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python添加模块搜索路径方法
2017/09/11 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
python logging模块的使用总结
2019/07/09 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
中软国际Java程序员笔试题
2014/07/19 面试题
俄语专业毕业生推荐信
2013/10/28 职场文书
司仪主持词两篇
2014/03/22 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
2019各种承诺书范文
2019/06/24 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python
Python 数据科学 Matplotlib图库详解
2021/07/07 Python