[JavaScript] 스코프(Scope)

자바스크립트에서의 스코프란 코드가 실행되는 컨텍스트(유효범위)이며 전역 스코프, 지역 스코프, eval 스코프로 나눌 수 있다.

전역 스코프

  • 함수나 객체의 밖에서 선언되었다면 전역 스코프로 정의된다.
  • 모든 곳에서 전역 스코프에 있는 변수를 사용할 수 있다.
// 전역 스코프
var foo = 1;
console.log(foo); // 1

function func() {
    // foo가 전역에서 선언되었기 때문에 함수 내부에서도 foo값을 사용할 수 있다.
    console.log(foo); // 1
}

지역 스코프

  • 함수나 객체의 안에서 선언되었다면 지역 스코프로 정의된다.
  • 해당 함수나 객체에서만 지역 스코프를 사용할 수 있다.

함수 지역 스코프

function func() {

    // 지역 스코프
    var foo = 1;
    console.log(foo); // 1
}

// foo가 func 함수 내부에서 선언되었기 때문에 함수 외부에서 사용을 할 수 없다.
console.log(foo); // Uncaught ReferenceError: foo is not defined

객체 지역 스코프

var obj = {
    foo: 1
};
console.log(obj.boo); // 1
console.log(boo); // Uncaught ReferenceError: foo is not defined

eval 스코프

  • eval의 경우 eval()을 사용해 매개변수를 사용하면 이를 사용했을 경우에만 해당 스코프에 담긴 값을 불러온다. 각각 선언할때 고유한 스코프를 가지는 것이 특징이다.
updated_at 02-12-2017