a = 2;
var a;
console.log(a);
① 오류가 발생한다.
② 정상적으로 실행되고 undefined가 출력된다.
③ 정상적으로 실행되고 2가 출력된다.
var a = 2;
를 하게 되면 JavaScript는 아래와 같이 동작한다.
var a = 'g';
function fn(){
console.log(a); // ①
var a = 'l';
console.log(a); // ②
}
fn();
① undefined
② l
fn
함수안의 var a = 'l'
의 선언 부분이 함수 내부의 최상위로 호이스팅 되기 때문에 ①의 값은 undefined
가 출력이 된다.
그 뒤, 변수a
에 l
이라는 값을 넣은 뒤, a
를 출력을 하게 되는데 이때의 a
(②)는 l을 출력하게 된다.
function abc() {
var a = ‘bbb’;
console.log(a) // ---- ①
function c() {
console.log(a); // ---- ②
(function() {
console.log(a); // ---- ③
a = ‘ccc’;
})();
var a;
console.log(a) // ---- ④
}
function d() {
console.log(a); // ---- ⑤
}
c();
a = ‘ddd’;
d();
};
abc();
Hoisting의 동작 원리
① bbb
② undefined
③ undefined
④ ccc
⑤ ddd
해당 포스팅은 썬한 코딩, 입사에 필요한 JS기술의 내용을 보며 공부한 것을 정리한 내용입니다.