Javascript-エスケープ


ハウスティンとは何ですか。


昇進の事前意義は昇進である.関数で変数を宣言すると、どの場所でも関数の開始位置に昇格します.ただし、宣言された部分だけが上に引っ張られ、値が代入された部分は位置を保持します.ホイスティンは宣言と分配の分離と考えられる.

へんすうかそく

function foo() {
	console.log(a);  // undefined
	var a = 100;
	console.log(a);  // 100
}

foo();
上記のコードを実行すると、aは宣言されず、aが呼び出されたためにエラーが発生します.ただし、JavaScriptでは、関数の最初のビットでaを宣言するため、undefined(エラーなし)が出力されます.上のコードは実は次のコードです.
function foo() {
	var a;
	console.log(a);  // undefined
	var a = 100;
	console.log(a);  // 100
}

foo();

関数の加速

foo();

function foo() {
	console.log('출력');
}
上記のコードでは、変数のエスケープと同様に関数宣言も向上するため、動作は正常です.ただし、次の関数式ではエラーが発生します.
foo();  // foo is not a function

var foo = function() {
	console.log('출력');
};
上のコードはトランスコードされて次のような形に変更されました.
var foo;

foo();  // foo is not a function

foo = function() {
	console.log('출력');
};
上述したようにfoo宣言が上向きにエスケープされるため、foo実行時は変数宣言状態にある.したがってfooは関数ではないとエラーを発生します.