Scope란, 우리가 작성하는 코드의 접근 범위를 결정하는 개념입니다.
function foo () {
/ ------ foo scope start --------- /
var a = 1;
console.log(a); // 로그 #1
/ ------ foo scope end ----------- /
}
foo();
var을 이용해 선언한 변수는 함수를 기준으로 접근 범위가 결정된다. 해당 변수 선언문을 감싸고 있는 함수를 기준으로 접근 범위가 설정되고 그 범위 내부에서는 자유롭게 접근하여 사용할 수 있기 때문이다.
var : Variable Scope Details
선언된 변수 a는 함수 내부에서까지만 유효범위를 갖는다.
function foo () {
var a = 1;
function bar () {
var a = 2
console.log(a);
}
bar();
console.log(a); // 로그 #1
}
foo();
bar 함수 안에서 실행된 console.log(a)는 함수내에서 실행문이 속한 최하위에 속해있기 때문에 바로 윗줄의 "var a = 2"의 영향을 받는다.