JSランニング三部作js実行コードは3つのステップに分かれています
JavaScript コードが実行されると、最初に構文解析を実行してコード内に低レベルのエラーがあるかどうかを確認し、次にプリコンパイルして内部ロジックを整理し、最後にコードを 1 行ずつ実行し始めます。 構文解析コードを実行する前に、システムはコード全体をスキャンして、中括弧の欠落などの低レベルの構文エラーがないか確認します。 プリコンパイルコンパイル前の序章プリコンパイルは関数が実行される直前に行われます。変数は宣言されずに値が割り当てられ、変数はグローバルオブジェクトによって所有されます。 宣言されたすべてのグローバル変数はウィンドウのプロパティです
プリコンパイルの4つのステップ
例を挙げて説明しましょう。また、先に進む前に自分で答えを出すこともできます。 関数fn(a) { コンソールにログ出力します。 var a = 123; コンソールにログ出力します。 関数a() {} コンソールにログ出力します。 var b = function() {}; コンソールログ(b); 関数 d() {} コンソールログ(d) } 関数(1) 最初のステップは、AO (アクティベーション オブジェクト) オブジェクトを作成することです。 2 番目のステップは、仮パラメータと変数宣言を見つけ、変数名と仮パラメータ名を undefined の値を持つ AO 属性名として使用することです。 { a: 未定義、 b: 未定義、 } 3番目のステップは、実際のパラメータと形式パラメータを統合することです。 { a: 1、 b: 未定義、 } ステップ4: 関数宣言を見つけて関数本体に値を割り当てる { a: 関数 a() {}, b: 未定義、 d: 関数 d() {} } したがって関数fnが実行される直前のa、b、dの値は上記のようになります。 したがって、fn(1)を実行した結果は
グローバルスコープでは、プリコンパイルのプロセスが若干異なります。
解釈コードを1行ずつ実行する 練習問題ここにいくつかの例がありますので、興味があればご覧ください。 関数テスト(a, b) { コンソールにログ出力します。 コンソールログ(b); var b = 234; コンソールログ(b); a = 123; コンソールにログ出力します。 関数a() {} var a; 234; var b = function() {}; コンソールにログ出力します。 コンソールログ(b); } テスト(1); グローバル = 100; 関数fn() { console.log(グローバル); グローバル = 200; console.log(グローバル); var グローバル = 300; } 関数fn(); var グローバル; 関数テスト() { コンソールログ(b); もし(a){ var b = 100; } 234; コンソールログ(c); } var a; テスト(); a = 10; コンソールログ(c); 要約するほとんどの場合、プリコンパイル プロセスを処理するために次の方法を使用します。
複雑な状況に遭遇した場合、問題を解決するには最も原始的な方法しか使えません。 JavaScript プリコンパイルの理解(まとめ)に関する記事はこれで終わりです。JavaScript プリコンパイルに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQLでヘッダー付きのCSVファイルをエクスポートする方法
>>: Linux で crontab 出力リダイレクトが有効にならない問題の解決方法
目次MySQL インデックス最適化ページングの調査ケース1ケース2 MySQL インデックス最適化ペ...
nginx はリクエストを受信すると、まず server_name でサーバーを照合し、次にサーバー...
目次ステップ1: プロジェクトをインストールするディレクトリにnode_modulesをインストール...
HTML POST リクエストで a タグを使用する 2 つの例を次に示します。 1. ajaxを使...
今日、MySQL の無料インストール版をデプロイしたところ、テーブル 'mysql.plug...
1. 前の章では、プログラムを yum リポジトリに直接インストールできることを学びましたが、そのた...
RGBカラーテーブル色英語名RGB 16色雪255 250 250 #FFFAFAゴーストホワイト2...
1. はじめにNginx は、無料のオープンソースの高性能 HTTP サーバーおよびリバース プロキ...
SQL ファジークエリステートメント一般的なファジーステートメントの構文は次のとおりです。 SELE...
この記事では、弾性ナビゲーション効果を実現するためのJavaScriptの具体的なコードを参考までに...
目次1. HTMLタグ要素にCSSスタイルを直接埋め込む2. HTMLのheadセクションにおけるス...
MySQL ストアド プロシージャは、確かに、非常にまれな使用シナリオのように見えます。この問題は、...
序文JavaScript で記述できるアプリケーションは、最終的には JavaScript で記述さ...
まず、コンテナが稼働している必要がありますコンテナのCONTAINER IDは、sudo docke...
1. 公式サイトのmysqlダウンロードページからmysql-5.7.21-windowx64.zi...