Bunun nedeni, bunun, kaldırma denilen şeyin bir sonucudur. Kaldırma, değişkenin bildirimini kapsamın en üstüne taşır. .
function() {
var a;
if(true) {
a = 5;
}
alert(a);
}
"değişken bildirimleri (ve genel olarak beyanlar) Herhangi kodu yürütülmeden, kodda herhangi bir yerinde bir değişken bildirerek üstünde deklare eşdeğerdir işlenir çünkü bu: Yani işlevi gerçekten böyle görünüyor Ayrıca, bir değişkenin bildirilmeden önce kullanılabileceği anlamına gelir.Bu değişkenin, işlevinin veya genel kodun üst kısmına taşındığı görüldüğü gibi, "kaldırma" denir. - var MDN
Sadece merak, 'zaten bloke if' ... – War10ck
@pstenstrm ne anlamı var - tek burada yer alan fonksiyon ve bunun dışına hiçbir ifadeleri var. Kapanışlar ilgisiz. – Quentin
@pstenstrm Kapanış mı? Burada kapatma yok. –