関数またはメソッド呼び出しを通じて特定の型を別の型に明示的に変換する場合、それは明示的変換と呼ばれ、その逆は暗黙的型変換と呼ばれます。 Google や Wikipedia には「表示型変換」や「暗黙的型変換」という言葉はありません。そう呼びましょう。
1. オペレーションにおける暗黙的な型変換
1.「+」演算子
次のようにコードをコピーします。
var a = 11、b = '22';
var c = a + b;
ここで、エンジンはまず a を文字列「11」に変換し、次にそれを b に接続して「1122」とします。 b を 22 にしてから算術加算を実行すればよいのではないかと疑問に思う人もいるかもしれません。その場合、c は 33 になります。演算子「+」の両側の一方が数値型で、もう一方が文字列型の場合、JS エンジンは算術加算ではなく文字列連結を実行するように規定しています。演算子「+」の機能を利用すると、数値を文字列に簡単に変換できます。のように
次のようにコードをコピーします。
var a = 11;
アラート(a の種類); //-->数値
a = a + '';
アラート(aのタイプ); //-->文字列
2.「-」演算子
「-」は、単項演算子 (負の演算) または二項演算子 (減算演算) です。のように
次のようにコードをコピーします。
var a = 11、b = '5';
var c = a - b;
アラート(typeof c); //--> 数値
上記の「+」とは異なり、文字列 b は暗黙的に数値 5 に変換され、算術減算が実行されます。この機能を使用すると、文字列を数値に簡単に変換できます。
次のようにコードをコピーします。
var a = '11';
a = a - '';
alert(typeof a);// -->数値
2. ステートメント内の暗黙的な型変換
1、場合
次のようにコードをコピーします。
var obj = {名前:'ジャック'}
if(obj){
//さらにやる
}
ここで、obj は暗黙的にブール型に変換されます。
2.その間
次のようにコードをコピーします。
var obj = {名前:'ジャック'}
while(obj){
//さらにやる
}
あたかも同じ
3. for in時の型変換
オブジェクト リテラルが定義されると、識別子から文字列への暗黙的な変換が発生します。
次のようにコードをコピーします。
var person = {'名前':'ジャック',"年齢":20,学校:'PKU'};
for(var a in person){
alert(a + ": " + typeof a);
}
ここでは、名前と年齢にそれぞれ一重引用符または二重引用符が追加され、文字列型であることを強調しています。学校には一重引用符または二重引用符が追加されていません。オブジェクトのプロパティを調べて、そのタイプを確認します。 school も暗黙的に String 型に変換されていることがわかります。
配列のインデックスは実際には文字列型です。驚くべきことですが、それは本当です。のように
次のようにコードをコピーします。
var ary = [1,3,5,7];
for(var a in ary){
alert(a + ": " + typeof a);
}
3. アラート時の暗黙的な型変換
次のようにコードをコピーします。
String.prototype.fn = function(){これを返す};
var a = 'こんにちは';
アラート(a.fn()のタイプ); //-->オブジェクト
アラート(a.fn()); //-->こんにちは
fn メソッドが String プロトタイプに追加され、これがオブジェクトであるため、typeof a.fn() は当然オブジェクトを返します。
キーは最後のalert(a.fn())です。a.fn()が返すものは明らかにオブジェクトですが、表示のために暗黙的に文字列「hello」に変換されます。
同じことが数値型でも起こります。
次のようにコードをコピーします。
Number.prototype.fn = function(){これを返す};
変数 a = 10;
alert(typeof a.fn());//-->オブジェクト
アラート(a.fn()); //-->10
a.fn() はオブジェクト型を返しますが、alert(a.fn()) が使用されると暗黙的に数値に変換されます。