導入
ステートメントがプログラマーがより頻繁に使用するステートメントである必要があり、多くの場合、判断の場合は行う必要があることがよくあります。ステートメントが一般に二重標識を使用して、前後の2つの要素が一貫しているかどうかを判断する場合。それらが一貫している場合、返された場合、次のステートメントを実行します。それ以外の場合は、他のステートメントを実行します。この記事に記載されている暗黙の型変換は、==によって引き起こされる変換を指します。簡単な例を挙げると、二重等号は合計等号ではなく、合計等しい符号は「===」3つの等しい符号です。ステートメント「1」== 1、一般に、以前の文字列「1」は番号1に変換されてから比較されます。この例を通じて、暗黙の型変換とは何かを理解する必要があります!
暗黙の型変換ステップ
1.最初に、二重等号の前後にNANがあるかどうかを確認します。 NANが存在する場合、すべてFALSEを返します。
2。二重標識の前後にブール膜があるかどうかを見てみましょう。ブールがある場合は、ブールを数値に変換します。 (falseは0、trueは1)
3.次に、二重等号の前後に文字列があるかどうかを確認します。 3つの状況があります。
1.他のパーティはオブジェクトであり、オブジェクトはtoString()またはvalueof()を使用して変換されます。
2。相手は数字であり、文字列は数値に変換されます。 (例が以前に与えられたことがあります)
3.相手は文字列であり、直接比較してください。
4.他の人はfalseを返します
4.それが数字の場合、相手はオブジェクトです。オブジェクトは比較のためにvalueof()またはtoString()を取得し、他のすべてのオブジェクトはfalseを返します。
5. null、未定義はタイプ変換を実行しませんが、それらは等しいです
上記の変換順序に留意する必要があります。質問の種類は、多くの場合、インタビュー中に発生します。
.toString()メソッドと.valueof()メソッドの数値変換
通常、オブジェクトを文字列に変換するにはtoString()メソッドを呼び出し、数値に変換するにはvalueof()メソッドを呼び出す必要があると考えていますが、実際に適用される場合はそれほど単純ではありません。次のコードの例を参照してください。
var obj = {webname: "haoroomsフロントエンドブログ"、url: "www.vevb.com"} console.log(obj.tostring()); // [オブジェクトオブジェクト]同様に、valueof()メソッドをもう一度見てみましょう。
var arr = [1、2、3]; console.log(arr.valueof()); // [1、2、3]
上記のコードからわかるように、valueof()メソッドはオブジェクトをオブジェクトを反映する数値に変換しません。代わりに、toString()を使用します
var arr = [1、2、3]; console.log(arr.tostring()); // 1,2,3
注:多くの友人は、文字列に変換するときは、最初にtoString()メソッドを呼び出す必要があると考えています。実際、これは間違った理解です。このように理解する必要があります。 toString()メソッドを呼び出すことは文字列に変換できますが、文字列の変換が最初にtoString()メソッドを呼び出すことを必ずしも意味しません。
次のコードを見てみましょう。
var arr = {}; arr.valueof = function(){return 1; } arr.tostring = function(){return 2; } console.log(arr == 1); // truevar arr = {}; arr.valueof = function(){return []; } arr.tostring = function(){return 1; } console.log(arr == 1); // true上記のコードから、変換のためのVALUEOF()への最初の呼び出しがあることがわかります。 valueof()が数値値でない場合、ToStringは変換のために呼び出されます!
var arr = {}; arr.valueof = function(){return "1"; } arr.tostring = function(){return "2"; } console.log(arr == "1"); // true「1」が文字列の場合、最初にvalueof()を呼び出すものです。
var arr = [2]; console.log(arr + "1"); // 21
上記の例では、toString()が呼び出されます。 Arr.ToString()の後に2が続くためです。
変換プロセスはこのようなものです。最初に、arrは最初に値()メソッドを呼び出しますが、数字のこの方法は単に継承され、書き換えられません(もちろん、この書き換えは私たちによって実装されていません)。戻り値は、値タイプではなく配列オブジェクト自体であるため、toString()メソッドを呼び出すため、文字列に変換する目的を達成します。
まとめ
ほとんどのオブジェクトは、値タイプに暗黙的に変換されます。valueof()メソッドを呼び出す最初の試みです。ただし、日付オブジェクトは例外です。このオブジェクトのvalueof()およびtoString()メソッドは慎重に書き換えられています。デフォルトは、 +演算子の使用など、toString()メソッドを呼び出すことです。他の算術演算環境にある場合、代わりにValueof()メソッドが呼び出されます。
var date = new date(); console.log(date + "1"); // 2014年4月17日日17:54:48 GMT + 0800(CST)1CONSOLE.LOG(日付 + 1); // 146088688888556CONSOLE.LOG(日付 * 1); // 14608868888557