자바스크립트 함수 유효범위(Scope)란?


"자바스크립트" 언어의 유효범위는 함수블록에만 존재 합니다.
 

즉, 타 언어에 대부분 존재하는 블록({})안의 유효범위란 존재하지 않는다는 말과 같습니다.



1. 함수 유효범위에 대한 코드입니다.

  1. function x(){
  2.  
  3.     this.x = 1;
  4.    
  5.     $x = 1;
  6.  
  7.     var $y = 2;
  8.  
  9. }
  10.  
  11. alert(new x().x); // 1
  12. alert(window.$x); // 1
  13. alert(window['$y']); // undefined



1. x() 함수 객체를 생성합니다.

2. x() 함수 객체의 인스턴스 맴버 this.x가 추가 됩니다.

3. var 선언문이 없는 암묵적 전역변수 $x가 선언 및 정의 됩니다.

4.  x() 함수 객체의 지역변수 $y가 선언 및 정의 됩니
다.

5.  alert(new x().x); : 객체의 인스턴스 맴버 x값 1을 반환 합니다.

6.   alert(window.$x);  : 객체(window)의 프로퍼티 x값 1을 반환합니다.

7.   alert(window['$y']);  : x() 함수 객체의 지역변수 $y에 접근할 수 없기 때문에
즉, 정의되지 않았기 떄문에 undefined를 반환 합니다.