JSデータ型およびデータ型変換
2892 ワード
JSデータ型変換小計
データ型最新のECMAScript規格では、7種類のデータ型 が定義されています.
元のタイプ Boolean Null Undefined Number String Symbol
オブジェクト
7.Object
明示的なタイプ変換 Number関数 元のタイプ変換
数値:変換後も元の値
文字列:数値に解析できる場合は対応する数値に変換し、そうでない場合はNaNを得る.空の文字列を0に変換
ブール値:true変換1、false変換0
undefined:NaNに変換
null:0に変換
オブジェクトタイプ変換は、オブジェクト自体の メソッドが複合タイプの値を返す場合、エラーが報告されます. String関数元のタイプ変換値:対応する文字列文字列に変換:変換後も元の値に変換ブール値:trueから'true'に、falseから'false'undefindeに:undefined'nullに変換:null' に変換
オブジェクトタイプ変換は、 メソッドが複合タイプの値を返す場合、エラーが報告されます. Boolean関数 元のタイプ変換
undefined:falseに移行
null:falseに移動
0:falseへ
NaN:falseへ
'(空の文字列):falseに変換
以上はすべてfalseに変わり、その他はtrueに変わります
暗黙型変換
jsでは、演算子が演算するとき、両側のデータが統一されていないとCPUが計算できないため、コンパイラは自動的に演算子の両側のデータをデータ型に変換し、同じデータ型に変換して計算する.プログラマが手動で変換する必要がなく、コンパイラによって自動的に変換される方式を暗黙的変換と呼ぶ. typeof よく見られる小さな穴 このような問題では、+は2つのケースに分けられます.
文字列コネクタ:+番号の両側に文字列があり、他のデータ型呼び出しString()メソッドを文字列に変換して接続します.
算術演算子:+記号の両方が数値で、他のデータ呼び出しNumber()メソッドを数値に変換して加算します大坑&%......&¥&%......(&))吐きました....
データ型
元のタイプ
オブジェクト
7.Object
明示的なタイプ変換
数値:変換後も元の値
console.log(Number(123)) //123
文字列:数値に解析できる場合は対応する数値に変換し、そうでない場合はNaNを得る.空の文字列を0に変換
console.log(Number('123')) //123
console.log(Number('123abc')) //NaN
console.log(Number('')) //0
ブール値:true変換1、false変換0
console.log(Number(true)) //1
console.log(Number(false)) //0
undefined:NaNに変換
console.log(Number(undefined)) //NaN
null:0に変換
console.log(Number(null)) //0
オブジェクトタイプ変換
valueOf
メソッドを呼び出し、メソッドが元のタイプの値(数値、文字列、ブール)を返すと、Number
メソッドを直接使用し、後続のステップを行わない.valueOf
メソッドが複合タイプの値を返す場合、オブジェクト自体のtoString
メソッドが呼び出され、toString
メソッドが元のタイプの値を返す場合、この値にはNumber
メソッドが使用され、後続のステップは行われません.toString
原理フロー:console.log(Number({a:1})) //NaN
a.valueOf() //{a:1}
a.toString() //"[object Object\]"
Number("[object Object]") //NaN
オブジェクトタイプ変換
toString
メソッドを先に呼び出し、toString
メソッドが元のタイプの数値を返す場合、stringメソッドを使用して、次のステップを行わない.toString
メソッドが複合タイプの値を返す場合、valueOf
メソッドが呼び出され、valueOf
メソッドが元のタイプの値を返す場合、この値にはString
メソッドが使用され、次のステップは行われません.undefined:falseに移行
null:falseに移動
0:falseへ
NaN:falseへ
'(空の文字列):falseに変換
以上はすべてfalseに変わり、その他はtrueに変わります
暗黙型変換
jsでは、演算子が演算するとき、両側のデータが統一されていないとCPUが計算できないため、コンパイラは自動的に演算子の両側のデータをデータ型に変換し、同じデータ型に変換して計算する.プログラマが手動で変換する必要がなく、コンパイラによって自動的に変換される方式を暗黙的変換と呼ぶ.
valueOf
typeof underfined = 'ndefined'
typeof null = 'object'
typeof Boolean = 'function'
文字列コネクタ:+番号の両側に文字列があり、他のデータ型呼び出しString()メソッドを文字列に変換して接続します.
算術演算子:+記号の両方が数値で、他のデータ呼び出しNumber()メソッドを数値に変換して加算します
typeof Number = 'function'
console.log(1 + true); // :1 + Number(true) = 1 + 1 = 2
console.log(1 + 'true'); // :String(1) + 'true' = '1' + 'true' = '1true'
console.log(1 + undefined)// :1 + Number(undefined) = 1 + 0 = 1