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タイプのデータがあれば、演算に参加します.)
'+'号の不思議な効果
データの前にプラス記号「+」があります.文字列を数字に変換できます.
基礎データ間の変換
その他のタイプの変換数
元のデータタイプ
ターゲットタイプ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
注:初めてです.フォーマットがよくなくて、間違いが多いです.皆さん、れんがをたたいてください.