JS 변수 Scope

shinyeongwoon·2022년 10월 25일
0

JS

목록 보기
6/16

Scope

유효한 참조 범위, var로 선언한 변수와 let, const 로 선한한 변수의 scope는 다른다

var : function-level scope
let, const ; Bolck-level scope

호이스팅 (Hoisting)

호이스팅이란 함수 내부에 있는 선언들을 모두 끌어올려 해당 함수 유효 범위의 최상단에 선언하는 것을 뜻함.

실제로 코드가 끌어올려지는 것이 아닌 JS Parser가 함수 실행 전 해당 함수를 한 번 훑는 과정에서 내부적으로 끌어올려 처리하는 것을 뜻함, 실제 메로리에서 변화가 없음

var 방식

/* 변수 호이스팅 */
console.log(a); // undefined
var a = 5;
console.log(a); //5


foo(); // foo
function foo() { console.log("foo");
}

let,const

/* 변수 호이스팅 */
console.log(a); // ReferenceError: a is not defined
let a = 5;
console.log(a); // 5
/* 함수 호이스팅 */ foo(); // error
var foo = function { console.log("foo");
}

hoisting side effect

var n = 4;

function hoistingN() {
	console.log(n); //undefined
	var n = 6;
	console.log(n); //6
} 

hoistingN();

0개의 댓글