検索
ホームページウェブフロントエンドjsチュートリアルjsの==、===、Object.js()の内容を詳しく解説(総合)

この記事では、js の ==、=== および Object.js() について詳しく説明します。必要な方は参考にしていただければ幸いです。

この記事では主に、JavaScript の 3 つの等価演算、==、===、Object.js() について説明します。比較と事例を通じてみんなの感動を深め、個別の事例を詳しく解説。

準備知識

ECMAScript7仕様におけるToPrimitive抽象演算の知識の詳細説明(例)

===演算子

x === y の場合、この演算子の比較手順は次のとおりです。

1. x の型が y の型と異なる場合は、false を返します。 x の型が数値の場合:

a. x が NaN の場合は false を返し、y が NaN の場合は false を返します。 x と y が同じ数値の場合は true を返し、x が 0 で y が -0 の場合は true を返します。 0 の場合は true を返します。

f は false を返します。SameValueNonNumber(x, y) の結果を返します。

SameValueNonNumber(x, y) 抽象演算は、2 つの非数値を比較し、同じ型の x と y が等しいかどうかを比較します。 比較手順は次のとおりです。 x が null または未定義の場合、true を返します。x が文字列型の場合、

x と y がまったく同じ文字エンコーディング シーケンスの場合は true を返し、それ以外の場合は false を返します。

##3 、x がブール型の場合、

#4。x と y が両方とも true または false の場合は true を返し、それ以外の場合は false を返します。シンボル タイプ

x と y が同じシンボル値の場合は true を返し、それ以外の場合は false を返します。x と y が同じオブジェクト値の場合は true を返し、そうでない場合は false を返します。間違い。

注意すべき点は、NaN、0、-0 です:

NaN === NaN // false
+0 === -0 // true
-0 === +0 // true

これら 3 つの例は、x === y 比較ステップの 2.1、2.4、および 2.5 にそれぞれ対応します。これら 3 つの例の出力結果は仕様の定義に完全に一致しています。これは仕様の定義に理由はありません。仕様がこのように定義されている理由については、仕様の作成者に問い合わせる必要があるかもしれませんが、これはこの記事の範囲外です。

Object.is()

Object.is(x, y) の場合、比較には抽象操作 SameValue(x, y) が使用されます。この抽象操作の手順は次のとおりです。

1. x の型が y の型と異なる場合は、

##2 を返します。 #a. x と y が両方とも NaN の場合は true を返し、x が 0 で y が -0 の場合は false を返します。 0 の場合は false を返し、

d が同じ数値の場合は true を返し、

e の場合は false を返します。 SameValueNonNumber(x, y)。

=== と Object.is() の違いは、NaN と符号付き 0 の処理にあることがわかります。 x == y、この演算子の比較手順は次のとおりです:

1. x と y が同じ型の場合、x === y の結果を返します。 . x が null で、y が未定義の場合は true を返します。x が未定義で y が数値の場合は true を返します。 y の型が文字列の場合、x == ToNumber(y) の結果を返します。x の型が文字列で、y の型が数値の場合は、ToNumber の結果を返します。 (x) == y;

6. x の型がブール型の場合、y の型の場合は ToNumber(x) == y; の結果を返します。がブール型の場合、x == ToNumber(y) の結果を返します。x の型が文字列、数値、またはシンボルのいずれかで、y の型がオブジェクトの場合は、 x == ToPrimitive(y) の結果

9. x がオブジェクトであり、y の型が文字列、数値、またはシンボルのいずれかの場合、ToPrimitive(x) == の結果。 y が返されます。

#10. false を返します。

メソッド ToNumber は上記で使用されており、ToNumber(x) の手順は次のとおりです。

1. x の型が未定義の場合、NaN を返します。 2. x の型が Null の場合は 0 を返し、x の型が true の場合は 1 を返し、

# の場合は 0 を返します。 ##4. x の型が数値の場合、x を返します。x の型が文字列の場合、この記事ではこの内容は紹介しません。詳細;

6. x の型がシンボルの場合は、NaN が返されます。 primValue の値は ToPrimitive(x, ヒント Number);

b. ToNumber(primValue) の結果を返します ;

[] == ![]

比較== 演算子の手順については上で説明しましたので、理解を深めるために例について説明します。

NaN === NaN // false
+0 === -0 // true
-0 === +0 // true
Object.is(NaN, NaN) // true
Object.is(+0, -0) // false
Object.is(-0, +0) // false
まず、左側の [] は空の配列、型はオブジェクト、右側は ![] です。 , [] は true 値であるため、![] の結果は false になります:

[] == ![]
その後、x == y 比較ステップに進みます。ステップ 7 で、x == ToNumber( の結果を返します。 y)、つまり:

[] == ![] // => [] == false
ToNumber(x) のステップ 3 から、ToNumber(false) が 0 を返すことがわかります:

[] == false // => [] == ToNumber(false)
次に、x == y のステップ 9 に進みます。比較ステップを実行し、ToPrimitive(x) == y の比較結果を返します:

[] == ToNumber(false) // => [] == +0
ToPrimitive([]) の結果は空の文字列 "" です。理由を説明してください。記事の ToPrimitive 抽象操作を確認してください。 ECMAScript7仕様。したがって、上記は次と同等です:

[] == +0 // => ToPrimitive([]) == +0
次に、x == y 比較ステップのステップ 5 に進み、ToNumber(x) == y の結果を返します。
"" == +0 // => ToNumber("") == +0

由ToNumber操作的第5步可知,ToNumber("")的结果是+0,所以也就是:

+0 == +0 // true

{} == !{}

首先,左边是{},类型是对象,右边是!{},{}是真值,所以!{}是false:

{} == !{} // => {} == false

然后同样会走到x == y比较步骤的第7步,返回x == ToNumber(y)的结果,也就是:

{} == false // => {} == ToNumber(false)

由ToNumber(x)的第3步可知,ToNumber(false)返回+0:

{} == ToNumber(false) // => {} == +0

然后走到x == y比较步骤的第9步,返回ToPrimitive(x) == y的比较结果:

{} == +0 // => ToPrimitive({}) == +0

ToPrimitive({})的结果是字符串"[object Object]",原因请查看文章ECMAScript7规范中的ToPrimitive抽象操作。所以,上面等价于:

"[object Object]" == +0

然后走到x == y比较步骤的第5步,返回ToNumber(x) == y的结果:

"[object Object]" == +0 // => ToNumber("[object Object]") == +0

由ToNumber操作的第5步可知,ToNumber("[object Object]")的结果是NaN,所以也就是:

NaN == +0 // false

所以,[] == ![]的结果是true,{} == !{}的结果是false。可能有人第一次看到[] == ![]的时候,觉得这个的比较结果怎么可能是true。我觉得有时候不要感性的去认识问题,按照规定的运算步骤走一遍,结果是什么就是什么。

总结

本文讲解了JavaScript中的三种相等运算:==,===和Object.js(),希望对大家有所帮助。

以上がjsの==、===、Object.js()の内容を詳しく解説(総合)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptはCで書かれていますか?証拠を調べるJavaScriptはCで書かれていますか?証拠を調べるApr 25, 2025 am 12:15 AM

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

JavaScript通訳者とコンパイラにおけるC/Cの役割JavaScript通訳者とコンパイラにおけるC/Cの役割Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール