var foo = 1

{

console.log('before declare line in block : ' + foo) // 1

var foo = 2

console.log('after declare line in bock : ' + foo) // 2

}


호이스팅하면 첫 console.log에서 undefined 나와야 되는거 아님? 왜 1나옴?


let foo = 1

{

console.log('before declare line in block : ' + foo) // // Uncaught ReferenceError: access before initialization

let foo = 2

console.log('after declare line in bock : ' + foo) // can't reach here

}


이건 let, const


머리 아프니까 걍 var 말고 let, const 쓰면 되지?


그리고 호이스팅으로 얻는 이점이 뭐임? 헷갈리기만 하고 좋은점이 뭔지 모르겠는데