JavaScript が "{}" を空のブロックとして解釈する場合
JavaScript では、空の中括弧のペア "{}" が空のブロックとして解釈される場合、検出された場合、インタプリタは最初にそれを空のオブジェクトではなく、空のコード ブロックとして解釈します。この動作は言語の文法に由来しており、「ブロック」は主要なステートメント タイプの 1 つです。
ブロックとオブジェクト リテラル
JavaScript では、ブロック ステートメントを次のように定義します。一連のステートメントを含む中括弧のペア。一方、オブジェクト リテラルは ExpressionStatement であり、中括弧で囲まれたキーと値のペアがあります。
解釈ルール
JavaScript パーサーは「{}」の解釈を優先します。オブジェクト リテラルよりも具体的な構造であるため、ブロックとして使用されます。中括弧でキーと値のペアを囲むか、「const」や「let」などのキーワードが前にない限り、それらは空のブロックとして扱われます。
Node.js と Firebug の間の不一致
提供された回答で述べたように、Node.js と Firebug が "{}" を解釈する方法には違いがあります:
この違いは、Node.js は主に JavaScript を式として評価するのに対し、Firebug および Chrome 開発ツールはステートメントを評価するという事実から生じます。
JavaScript エンジンのデモ
V8 (Chrome のエンジン) と SpiderMonkey (Firefox のエンジン) から提供されたコード スニペットに示されているように、パーサーは最初に中括弧をチェックし、見つかった場合はブロックとして解析を続けます。
要約すると、JavaScript の解釈は次のようになります。空のブロックとしての「{}」は、ブロック ステートメントを優先する文法規則に従います。 Node.js と Firebug の間の不一致は、Node.js が式として扱い、Firebug がステートメントとして扱うという、評価アプローチの違いから生じます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3