JS足し算はどれぐらい知っていますか?
2530 ワード
今日は質問を受けました.
反応しませんでした.正しいですか?
どうせ間違えました.ハハハ.
はい、先に結果を発表します.
足し算
1、プラス記号演算子は元のデータタイプにしか使えません.オブジェクトタイプの値に対してはデータ変換が必要です.
2、変換後、元のデータタイプが「文字列」の値である場合、別の演算元は強制的に文字列に変換し、文字列の接続演算を行います.
3、他の場合は、すべての演算元が元のデータタイプの「数」タイプの値に変換され、数値の加算が行われます.
Number()変換規則が デジタル値であれば、単純な着信とリターンだけです. は は、 文字列であれば、以下の規則に従います. オブジェクトであれば、オブジェクトの 例 である. です. です.
その他はこの類推によって得られます.
分かりましたか
var a = +[]
コンソールを使わないで、どれぐらい話せますか?反応しませんでした.正しいですか?
どうせ間違えました.ハハハ.
はい、先に結果を発表します.
console.log(+[]) // 0
console.log(0 + []) // '0'
console.log(0 - []) // 0
console.log([] + []) // ''
console.log({} + []) // '[object Object]'
次によく分析してみます.何の原理ですか?足し算
1、プラス記号演算子は元のデータタイプにしか使えません.オブジェクトタイプの値に対してはデータ変換が必要です.
2、変換後、元のデータタイプが「文字列」の値である場合、別の演算元は強制的に文字列に変換し、文字列の接続演算を行います.
3、他の場合は、すべての演算元が元のデータタイプの「数」タイプの値に変換され、数値の加算が行われます.
Number()変換規則
Boolean
値であれば、true
およびfalse
はそれぞれ1および0に変換される.null
値であれば、0を返します.undefined
であれば、NaN
を返します. (1) , , `NaN`。
(2) ( ), , “1” 1,“123” 123, “011” 11( );
(3) , “1.1”, ( );
(4) , `0xf`, ;
(5) ( ), 0;
(6) , `NaN`。
valueOf()
方法を呼び出し、前の規則に従って戻り値を変換する.変換の結果がNaN
である場合は、オブジェクトのtoString()
方法を呼び出し、再び前の規則に従って文字列値を変換する.console.log(Number(undefined)) // NaN
console.log(Number(null)) // 0
console.log(Number(NaN)) // NaN
console.log(Number('')) // 0
console.log(Number({})) // NaN
console.log(Number({a:1})) // NaN
console.log(Number([])) // 0
console.log(Number([1])) // 1
console.log(Number([1,2])) // NaN
console.log(String(undefined)) // 'undefined'
console.log(String(null)) // 'null'
console.log(String(NaN)) // 'NaN'
console.log(String({})) // '[object Object]'
console.log(String({a:1})) // '[object Object]'
console.log(String([])) // ''
console.log(String([1])) // '1'
console.log(String([1,2])) // '1,2'
分析+[]
、[]
は対象であり、第6条の規則に従って変換された結果はNaN
であり、次いで対象のtoString()
方法を呼び出して''
空の文字列を得てNumber('') => 0
であるため、+[] => 0
、結果は数字0 0 + []
を得て、0 + '' => '0'
を得て、結果は文字列0 {} + []
を得て、'[object Object]' + '' => '[object Object]'
を得て、結果は文字列[object Object]
その他はこの類推によって得られます.
分かりましたか