자바스크립트 함수 유효범위(Scope)란?
Javascript 2011. 12. 9. 10:49
"자바스크립트" 언어의 유효범위는 함수블록에만 존재 합니다.
즉, 타 언어에 대부분 존재하는 블록({})안의 유효범위란 존재하지 않는다는 말과 같습니다.
1. 함수 유효범위에 대한 코드입니다.
-
function x(){
-
-
this.x = 1;
-
-
$x = 1;
-
-
var $y = 2;
-
-
}
-
-
alert(new x().x); // 1
-
alert(window.$x); // 1
-
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를 반환 합니다.