JavaScriptでの可変プロモーション

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改善され、メモリは最初の段階で彼のためのスペースも開きましたが、このステートメントの特性のため、ステートメントの前に使用することはできません

おすすめ

転載: blog.csdn.net/Jack_lzx/article/details/111930742