JS
コード生成時に実行される場合実行環境。
コードが関数で記述されている場合は、関数実行環境が生成されます。それ以外の場合は、グローバル実行環境になります。これらの2つの実行環境のみがあります。
次のコードを見てください。
b(); // call b
console.log(a); // undefined
var a = 'Hello world';
function b() {
console.log('call b');
}
これは、関数と変数がプロモートされるためです。プロモートの通常の説明は、宣言されたコードを一番上に移動することです。
しかし、より正確な説明は、実行環境を生成するとき、2つの段階があるということです。
最初の段階は作成段階です。JS
通訳者は、昇格する必要のある変数と関数を見つけて、事前にメモリ内に十分なスペースを与えます。関数の場合は、関数全体をメモリに保存します。変数は宣言され、値が割り当てられるだけですundefined
。
2番目の段階であるコード実行段階では、事前に直接使用できます。
昇格プロセスでは、同じ関数が前の関数を上書きし、その関数は変数の昇格よりも優先されます。
b(); // call b second
function b() {
console.log('call b fist');
}
function b() {
console.log('call b second');
}
var b = 'Hello world';
var
多くのエラーが発生するため、でES6
紹介されていlet
ます。let
前のステートメントは使用できませんが、これはlet
改善されないとは言われません。
let
改善され、メモリは最初の段階で彼のためのスペースも開きましたが、このステートメントの特性のため、ステートメントの前に使用することはできません。