JavaScriptの「巻き上げ」に出くわしましたが、このコードスニペットが実際にどのように機能するのかわかりませんでした。
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a);
function a() {}
( )のような関数宣言が関数b
スコープの一番上に引き上げられることは知っていますが、 a
(関数宣言は変数宣言をオーバーライドしますが、変数の初期化はオーバーライドしないため)の値をオーバーライドするべきではないため、アラートの値は1ではなく10になります!!