JavaScript の二重等号によって引き起こされる暗黙的な型変換の詳細な解釈 (グラフィック チュートリアル)

亚连
リリース: 2018-05-21 11:19:10
オリジナル
1203 人が閲覧しました

JavaScript の == 判定によって引き起こされる変換は、インタープリターの一連の実行ステップをトリガーします。次に、JavaScript の二重等号によって引き起こされる暗黙的な型変換について詳しく説明します。必要な方は、

を参照してください。

はじめに

if ステートメントは、通常、前後の 2 つの要素が一致しているかどうかを判断するために、プログラマによって頻繁に使用されるステートメントです。一貫性がある場合、戻り値は true になります。次に、次のステートメントを実行します。そうでない場合は、他のステートメントを実行します。この記事で説明する暗黙的な型変換とは、== によって引き起こされる変換を指します。簡単な例を挙げると、2 つの等号は合同符号ではありません。合同符号は「===」と 3 つの等号です。この場合、通常、前の文字列「1」は に変換されます。 1 番目を指定して比較します。この例を通して、暗黙的な型変換とは何かを理解する必要があります。

暗黙的な型変換手順

1. まず、二重等号の前後に NaN があるかどうかを確認します。NaN がある場合は、常に false を返します。

2. 二重等号の前後にブール値があるかどうかを確認し、ブール値がある場合はそのブール値を数値に変換します。 (false は 0、true は 1)

3. 次に、二重等号の前後に文字列があるかどうかを確認します。

1. 相手がオブジェクトで、オブジェクトが を使用して変換されます。 toString() または valueOf();

2、相手が数値の場合、文字列を数値に変換します。
3. 相手が文字列である場合は、直接比較します。 false
4. 数値の場合、相手がオブジェクトの場合、オブジェクトは比較のために valueOf() または toString() を受け取り、それ以外はすべて false を返します

5。は等しい

上記の変換シーケンスは面接中によく発生することに注意してください。

.toString() メソッドと .valueOf() メソッド 数値変換

通常、オブジェクトを文字列に変換するには toString() メソッドを呼び出す必要があり、それを数値に変換するには、次のようにする必要があると考えられます。 valueOf() メソッドを呼び出しますが、実際のアプリケーションではそれほど単純ではありません。次のコード例を見てください:

var obj = {
 webName: "haorooms前端博客",
 url:"www.jb51.net"
}
console.log(obj.toString()); //[object Object]
ログイン後にコピー

同様に、valueOf() メソッドを見てみましょう:

var arr = [1, 2, 3];
console.log(arr.valueOf());//[1, 2, 3]
ログイン後にコピー

上記のコードからわかるように、 valueOf() メソッドは、オブジェクトをこの A 個のオブジェクトを反映できるものに変換しません。代わりに、toString() を使用します

var arr = [1, 2, 3];
console.log(arr.toString());//1,2,3
ログイン後にコピー

注: 多くの友人は、文字列に変換するには、最初に toString() メソッドを呼び出す必要があると信じています。実際、これは toString() を呼び出すのは間違った理解です。メソッドは string に変換できますが、文字列の変換は必ずしも最初に toString() メソッドを呼び出すことを意味するわけではありません。

次のコードを見てみましょう:

var arr = {};
arr.valueOf = function () { return 1; }
arr.toString = function () { return 2; }
console.log(arr == 1);//true

var 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
ログイン後にコピー

上記の例では、arr.toString() の後に 2 が続くため、toString() が呼び出されます。

変換処理はこんな感じです。 まずarrはvalueOf()メソッドを呼び出しますが、この数値のメソッドは継承されているだけで書き換えられていません(もちろんこの書き換えは当方で実装したものではありません)。配列オブジェクト自体は値型ではないため、代わりに toString() メソッドが呼び出され、文字列への変換の目的が達成されます。

概要

暗黙的に値型に変換されるほとんどのオブジェクトは、最初に valueOf() メソッドの呼び出しを試みます。ただし、Date オブジェクトは例外で、このオブジェクトの valueOf() メソッドと toString() メソッドは、他の算術演算の場合などに toString() メソッドを呼び出すように注意深く書き直されています。環境では、代わりに valueOf() メソッドが呼び出されます。

rreee

以上が皆さんのためにまとめたもので、今後皆さんのお役に立てれば幸いです。

関連記事:

JavaScript の引数オブ​​ジェクトの詳細な分析 (グラフィック チュートリアル)

JavaScript_object の基本入門 (必読) (グラフィック チュートリアル)

javascriptClient- の詳細な解釈サイドイベント主導 (画像とテキストのチュートリアル)

以上がJavaScript の二重等号によって引き起こされる暗黙的な型変換の詳細な解釈 (グラフィック チュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート