javascript不同类型数据之间的运算的转换方法
2014-02-13 00:00
786 查看
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类型数据参与运算)
对象参与加减法运算
对象参与基础类型数据运算,先转化为基础类型。先调用其valueOf方法,如果返回的不是基础类型,再调用其toString方法,如果返回的还不是基础类型,则抛出错误。但是,Date数据刚好相反
把上面的例子换成Object或者其他类型能得到相应的结果,不过是先调用valueOf,再调用toString。
'+'号的神奇功效
数据前有加号‘+',可以让字符串转化为数字
注:第一次,格式不好,纰漏多,欢迎大家拍砖
基础数据之间的转换
其它类型转化数字
原始数据类型
目标类型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不同类型数据之间的运算的转换方法
- javascript不同类型数据之间的运算是如何转换的
- javascript不同类型数据之间运算的转换
- 前端-javascript-不同数据类型间的运算,数据类型转换规则
- objective-c中不同数据类型之间的相互转换
- OC各种数据类型之间的转换方法
- 解决无法在unicode和非unicode字符串数据类型之间转换的方法详解
- Java中几种常用数据类型之间转换的方法
- C++中不同数据类型之间的相互转换
- Python (3)python中的数据类型转换,运算和运算符,数据类型检测方法
- 解决无法在unicode和非unicode字符串数据类型之间转换的方法详解
- OC基础:OC 基本数据类型与对象之间的转换方法 分类: ios学习 OC 2015-06-18 20:01 11人阅读 评论(0) 收藏
- JavaScript不同数据类型的转换
- OC基础:OC 基本数据类型与对象之间的转换方法
- javascript不同数据类型的转换
- (转)OC各种数据类型之间的转换方法
- 基本数据类型装箱拆箱,与转换方法,BigDecimal运算,Random随机数
- Java中几种常用数据类型之间转换的方法
- OC 数据类型之间的转换方法
- OC各种数据类型之间的转换方法