您的位置:首页 > Web前端 > JavaScript

JavaScript不同类型数据之间的运算如何进行转换

2018-09-09 19:25 459 查看

     在js中有5种基础类型数据:string、number、boolean、null、undefined,其中,常用于计算或者比较的类型是前面三种。

基础数据之间的转换

 

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

[code]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数据刚好相反(先toString方法)。

[code]//为了便于观察重写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。

 

'+'号的神奇功效

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

[code]+'1'+1 // 2

+'s'+2 // NaN
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: