{} を解析すると、次のように解釈されます: ブロックまたはオブジェクト?

DDD
リリース: 2024-10-18 12:07:02
オリジナル
484 人が閲覧しました

When Parsing {}, Interprets It As What: Block or Object?

JavaScript の {} の解釈におけるブロックとオブジェクト

コードを解析するとき、JavaScript は "{}" を次のように解釈するというあいまいさに直面します。空のブロックまたは空のオブジェクト。どの解釈を使用するかを決定するために、JavaScript は仕様で定義された文法に従います。

言語仕様によれば、Statement は Block、VariableStatement、EmptyStatement、または ExpressionStatement の形式を取ることができます。ブロックは、「{}」の後に「}」で終わるオプションのステートメントのリストが続くものとして定義されます。

したがって、JavaScript は「{}」に遭遇すると、最初にそれをブロックと見なします。なぜなら、「{}」だからです。 " はブロックの構文と一致します。パーサーがブロックとして解釈できない場合にのみ、{} は ExpressionStatement のカテゴリに分類される空のオブジェクトと見なされます。

提供された例では、「{}[]」は次のように解釈されます。空のブロックの後に単項プラスと空の配列が続きます。空のブロックは何も行わず、配列は空の文字列に変換され、その後数値 (0) に変換されます。

Firebug はこの入力を Statement として解釈し、空のブロックが未定義と評価されます。一方、Node.js はこれを式として扱い、ブロックとして解析できず、{} に評価します。

この矛盾は、それぞれの JavaScript エンジンによる入力の解釈の違いから生じます。 Firebug および Chrome 開発ツールは、{} を空のブロックとみなし、これをステートメントとして扱いますが、Node.js はこれを式として扱い、空のオブジェクトになります。

以上が{} を解析すると、次のように解釈されます: ブロックまたはオブジェクト?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!