目次
型解析の難題: リテラルに対して、instanceof が予期しない動作をする理由
ホームページ ウェブフロントエンド jsチュートリアル JavaScript のリテラルで「instanceof」が予期しない動作をするのはなぜですか?

JavaScript のリテラルで「instanceof」が予期しない動作をするのはなぜですか?

Nov 02, 2024 am 09:36 AM

Why Does `instanceof` Behave Unexpectedly with Literals in JavaScript?

型解析の難題: リテラルに対して、instanceof が予期しない動作をする理由

調査の開始

JavaScript の instanceof 演算子、表向きは次のように使用されます。クラス内のオブジェクトのメンバーシップを確認し、特定のリテラルに対して独特の動作を示し、開発者を当惑させます。いくつかの複雑な例を詳しく見てみましょう。

<pre>"foo" instanceof String //=> false
"foo" オブジェクトのインスタンス //=> false

true Boolean のインスタンス //=> false
true オブジェクトのインスタンス //=> false
false Boolean のインスタンス //=> false
false オブジェクトのインスタンス //=> false

12.21 インスタンスオブ数値 //=> false
/foo/instanceof RegExp //=> true</pre>

謎の解明

この謎めいた動作の根本は、JavaScript におけるプリミティブとオブジェクトの基本的な違いにあります。プリミティブは、文字列、数値、ブール値、null などの基本的なデータ型を表します。一方、オブジェクトは、コンストラクターまたはクラスからプロパティとメソッドを継承するインスタンス化されたエンティティです。

リテラルでinstanceofを使用する場合、重要な考慮事項は、プリミティブが本質的にどのクラスにも属さないことです。代わりに、それらは独自の属性セットを持つ別個のエンティティです。たとえば、「foo」は単なる文字列リテラルであり、String クラスのインスタンスではありません。したがって、式「foo」instanceof String は false を返します。

結果と回避策

この癖は型チェックに影響します。プリミティブのタイプを決定するために、開発者は多くの場合、instanceof の代わりに typeof 演算子を使用します。たとえば、typeof "foo" は "string" を生成し、リテラルの型を確認します。

結論

リテラルに対する instanceof の一見気まぐれな動作は、リテラルに対する固有の区別から生じています。 JavaScript のプリミティブとオブジェクト。最初は直感に反するように見えるかもしれませんが、この根本的な違いを認識すると、より扱いやすくなります。この微妙な理解を受け入れることで、開発者は JavaScript の複雑な型チェックをより自信を持って操作できるようになります。

以上がJavaScript のリテラルで「instanceof」が予期しない動作をするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScriptの文字列文字を交換します

カスタムGoogle検索APIセットアップチュートリアル カスタムGoogle検索APIセットアップチュートリアル Mar 04, 2025 am 01:06 AM

カスタムGoogle検索APIセットアップチュートリアル

例JSONファイルの例 例JSONファイルの例 Mar 03, 2025 am 12:35 AM

例JSONファイルの例

8見事なjQueryページレイアウトプラグイン 8見事なjQueryページレイアウトプラグイン Mar 06, 2025 am 12:48 AM

8見事なjQueryページレイアウトプラグイン

10 jQuery構文蛍光物 10 jQuery構文蛍光物 Mar 02, 2025 am 12:32 AM

10 jQuery構文蛍光物

独自のAjax Webアプリケーションを構築します 独自のAjax Webアプリケーションを構築します Mar 09, 2025 am 12:11 AM

独自のAjax Webアプリケーションを構築します

&#x27; this&#x27; JavaScriptで? &#x27; this&#x27; JavaScriptで? Mar 04, 2025 am 01:15 AM

&#x27; this&#x27; JavaScriptで?

10 JavaScript&JQuery MVCチュートリアル 10 JavaScript&JQuery MVCチュートリアル Mar 02, 2025 am 01:16 AM

10 JavaScript&JQuery MVCチュートリアル

See all articles