첫페이지 > Tip&Tech > 간단한 JavaScript 문제 - Scope

간단한 JavaScript 문제 - Scope

2007/06/21

Scope 는 어떤 변수나 객체가 어디까지 유효한가에 대한 범위입니다.
전역변수의 scope 는 당연히 전체 프로그램이고, 지역변수는 함수 혹은 메소드 등 자신이 속한 부분에 대해서만 유효합니다.

JavaScript 에도 당연히 scope가 존재합니다. ^^ 간단히 다음 문제를 보고 어떤 결과가 출력될지 한번 예상해보세요.

  1  var yangpa5 = "Marry me";
  2  function print_value() {
  3    document.writeln(yangpa5);
  4    var yangpa5 = "나 때문에";
  5    document.writeln(yangpa5);
  6    
  7    function nested() {
  8      document.writeln(yangpa5);
  9      yangpa5 = "사랑...그게뭔데";
 10      document.writeln(yangpa5);
 11      var yangpa5 = "한 사람";
 12      document.writeln(yangpa5);
 13    }
 14    nested();
 15  }
 16  print_value();

정답을 보기 전에 결과가 어떻게 나올지부터 예상해보세요. ^^

.

.

.

.

undefined
나 때문에
undefined
사랑...그게뭔데
한사람

결과가 충분히 이해가 되시나요? (위 공백을 드래그해서 선택하세요)
지역변수를 var 로 선언하게 되면 지역변수가 적용되는 scope 내에서 변수가 선언되기 전까지는 해당 변수는 undefined 가 되는 것입니다. 설사 이름이 같은 전역변수가 있다해도 scope 내에서는 무시되는거죠. 재밌는 것은 nested 함수에서 보듯이 꼭 var 로 선언하기 전이라도 단지 값을 할당해주는 것만으로도 변수가 선언된 것과 같은 효과가 있다는 겁니다. 아… nested 함수에서 var yangpa5 가 없었다면 결과가 달라졌으리라는 것은… 아시겠죠? ^^

Tip&Tech , , ,

  1. 2007/06/28 18:18 | #1

    항상 고니님 글 잘 보고 다닙니다 ㅋㅋ

  2. 2007/12/28 05:24 | #2

    Dinamic Link와 Static Link를 고려한 답을 준비했는데 아니었네요 -.-;;;

  1. 아직은 트랙백이 없습니다.
댓글이 닫혀 있습니다.