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 出力リダイレクトが有効にならない問題の解決方法
目次インデックス プッシュダウンとは何ですか?インデックスプッシュダウン最適化の原理インデックスプッ...
デフォルトでは、Nginx は IP アドレスごとに 1 つの SSL 証明書のみをサポートします。...
今日、最終プロジェクトに取り組み始めましたが、今年はMySQLデータベースを使用したため、Navic...
まず、href 属性と onclick イベントの実行順序について説明します。マウスが a タグをク...
定義と使用法<input> タグはユーザー情報を収集するために使用されます。 type ...
必要ユーザーがフォームに入力して「保存」をクリックすると、PDF ドキュメントを直接ダウンロードでき...
まず質問させてください。HTML ページを作成するときに、外部から JS ファイルをインポートする場...
MySql での時間比較の実装unix_timestamp() unix_timestamp 関数は...
目次chmod例権限に関する特別な注意分析するチョーンchgrp umask Linux オペレーテ...
目次1. MySQLの関数の説明2. 単行関数の分類3. キャラクター機能4. 数学関数5. 日付と...
この記事では、Webオンラインチャットを実装するためのVueの具体的なコードを参考までに紹介します。...
使用状態useState は、関数コンポーネント内で呼び出すことで、コンポーネントに内部状態を追加し...
Centos にプロジェクトをデプロイするときに奇妙な問題が見つかりました。データベース接続で例外...
ソフトウェアバージョンウィンドウズ: ウィンドウズ10 MySQL: mysql-8.0.16-wi...
目次質問1件2つの方法3 実験結果と考察質問1件ご存知のとおり、 Pycharm 、 IDLE 、 ...