VARキーワードを使用した事前実験
まず、このコード実行の結果を見てみましょう。
コードコピーは次のとおりです。
アラート(n); //未定義のポップアップ
var n = 10;
ポップアップの結果は未定義ですが、なぜ10ですか?次のコード実行結果を見てみましょう。
コードコピーは次のとおりです。
アラート(n);
n = 10;
操作レポートは次のとおりです。
今回エラーが報告する理由は、コードが実行されているとき、変数nが宣言されないことです。これら2つのコードの比較を通じて、VARキーワードを使用した変数とVARキーワードのない変数には違いがあることがわかります。コードが実行される前に、ブラウザは初期値を未定義にしていないようです。したがって、コードが実行される前に、ブラウザエンジンのプロセスは、VARキーワードと関数キーワード、およびコードが実行される前の機能と機能を使用して変数を自動的にスキャンします。
関数キーワードを使用した事前実験
次のコード実行結果を見てみましょう。
コードコピーは次のとおりです。
fn(); // popt hello
関数fn(){
アラート( 'hello');
}
実行結果がhelloを表示し、FNは正常に実行できます。その理由は、FNがコードが実行される前に事前に説明されているためです。 FNは、実現前に定義されています。最初のコード実行結果が10に表示されないが未定義であり、別の概念が再び導入されている理由が再度質問されています。
JavaScriptの宣言と定義
通常、VARキーを使用して変数を宣言し、関数キーワードを使用して関数を定義します。ただし、関数キーワードは機能を同時に宣言および定義しますが、VARは変数のみを宣言でき、定義の関数はありません。
以下は、varキーワードで宣言された変数です。
コードコピーは次のとおりです。
var n; //変数nを宣言します
var m = 10; //変数mを宣言し、10に割り当てます
以下は、関数キーワードで定義された関数です。
コードコピーは次のとおりです。
//関数fnを定義します
関数fn(){
アラート( 'hello');
}
VARキーワードのプリプレーニングと機能キーワードの違い
実際、2つの違いは、VARキーワードで事前に説明されている場合、宣言部分のみが事前に説明されている(それ自体を定義する能力がないため)、関数キーワードで事前に説明された場合、宣言と定義は同時に事前に説明されることです。次に、最初のコードをもう一度分析し、次のように分析します。
型にはまらない(詐欺)の概要
なぜそれは型にはまらないと言われているのですか?次のコード(Firefoxを除く)をご覧ください。
コードコピーは次のとおりです。
アラート(n);
fn();
if(false){
var n = 10;
関数fn(){
アラート( 'hello');
}
}
未定義はコード実行の最初の行にポップアップし、Helloはコード実行の2行目にポップアップします。 nとfnはコード実行前に事前に説明されているためです。条件が偽であると判断されたとしても、永続的なブラウザエンジンは、VARキーワードとFNで宣言された変数nを、関数キーの定義でスキャンします。
*事前解釈は、再定義ではなく、再宣言を無視します
この場所は比較的絡み合っており、理解するのは簡単ではないため、アスタリスクを追加しました。次のコードをご覧ください。
コードコピーは次のとおりです。
アラート(n);
var n = 10;
var n = 9;
var n;
アラート(n);
このコードの実行結果は何ですか?分析しましょう:
コードのアップロードを続けてください。次の実行結果を分析してください。
コードコピーは次のとおりです。
fn();
関数fn(){
アラート( '1');
}
fn();
関数fn(){
アラート( '2');
}
fn();
コード分析図は次のとおりです。
関数定義を使用した関数前実験分析
要約:
このブログ投稿では、大規模なコードとスクリーンショットを使用して、JavaScriptの事前解釈を概説しています。さまざまな本を見ると、事前解釈の説明はほとんどありません。実際、仕事で使用されるシナリオは多くありません。残念ながら、事前解釈は、大手企業のインタビューの質問に必須です。私が最初にそれと接触したとき、私はそれが常に常識に従ってコードを書いていないと感じましたが、時にはそれは正常に実行され、エラーを報告しないことがあります。もちろん、これにより、その謎の探求も増加し、ブラウザエンジンがコードをどのように説明および実行するかをさらに理解することができました。いくつかの古典的なケースを使用して、後続のブログ投稿で分析します。あなたのサポートをありがとう!