javascriptの異なるタイプのデータの間の演算はどのように変換されますか?

2342 ワード

jsの異なるタイプの基礎データの間で変換できます.このような変換はランダムではなく規則的に検索可能です.jsには5種類の基礎タイプのデータがあります.string、number、bollan、null、undefinedの中で、計算または比較によく使われるタイプは前の3種類です.
基礎データ間の変換
その他のタイプの変換数
元のデータタイプ
ターゲットタイプ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
 注:初めてです.フォーマットがよくなくて、間違いが多いです.皆さん、れんがをたたいてください.