関数またはメソッド呼び出しを通じて特定の型を別の型に明示的に変換する場合、それは明示的変換と呼ばれ、その逆は暗黙的型変換と呼ばれます。 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; 🎜>alert(typeof a); //-->number
a = a '';
alert(typeof a); //-->string
2," -" 演算子
「-」は単項演算子 (負数) または二項演算子 (減算演算) です。たとえば、
var a = 11, b = '5';
var c = a - b;
alert(typeof c); //-->number
これは、上記の " " に反します。文字列 b は暗黙的に数値 5 に変換され、算術減算が実行されます。この機能を使用すると、文字列を数値に簡単に変換できます
var a = '11';
a = a - ''; // -->number
ステートメント内の 2 つの暗黙的な型変換
1、
var obj = {name:'jack'}
if(obj){
//さらに実行します
}
ここで、obj は暗黙的にブール型に変換されます
2, while
var obj = {name:'jack'}
while(obj){
//さらに実行
}
if と同じ
3、for の場合の型変換
オブジェクト リテラルを定義するときに、識別子から文字列への暗黙的な変換が発生します。
var person = {'name':' jack', "age":20,school:'PKU'};
for(var a in person){
alert(a ": " typeof a);
ここでは、名前と年齢にそれぞれ一重引用符または二重引用符が追加され、文字列型であることを強調していますが、学校には一重引用符または二重引用符が追加されていません。オブジェクトのプロパティを調べて、そのタイプを確認します。 school も暗黙的に String 型に変換されていることがわかります。
配列のインデックスは実際には文字列型です。驚くべきことですが、それは本当です。たとえば、
コードをコピーします。
3. アラート中に存在します
の暗黙的な型変換
これを返す String プロトタイプに fn メソッドを追加します。これはオブジェクトであるため、typeof a.fn() は当然オブジェクトを返します。
キーは最後のalert(a.fn())です。a.fn()が返すものは明らかにオブジェクトですが、表示のために暗黙的に文字列「hello」に変換されます。
同じ状況が、
Number.prototype.fn = function(){return this};
var a = 10
alert(typeof a.fn());//-->object
alert (a. fn()); //-->10
a.fn() はオブジェクト タイプを返しますが、alert(a.fn()) が次のように変換されるときに暗黙的に変換されます。数字。