2) 자바스크립트에서의 scope (로컬, 글로벌)
자바스크립트의 scope는 로컬과 글로벌만이 있고, 블록 단위의 scope은 지원하지 않는다. 다음 예제는 이를 테스트한 예제이다.
<script> function test() { for(var i = 0; i < 10; i++){
} alert('local : ' + i); } test(); alert('global : ' + i); </script> |
<script> function test() { for(i = 0; i < 10; i++){
} alert('local : ' + i); } test(); alert('global : ' + i); </script> |
첫 번째 예제의 결과는 local : 10 출력한 후에 에러를 발생 시키고, 두 번째 예제는 local : 10과 global : 10을 출력한다.
두 번째 예제는 i가 글로벌 scope이므로 이해할 수 있는 결과이다. 첫 번째 예제는 for문 밖에서 어떻게 i를 출력할 수 있을까?
그 이유는 자바스크립트에서 블록 단위의 scope이 존재하지 않기 때문이다.
즉 변수 i는 비록 for문 블록 안에서 선언되었다고 해도 test() 함수의 지역 변수로 존재한다.
또한 매개변수도 지역 변수이며, 클로저의 대상이 될 수 있다.
'JavaScript' 카테고리의 다른 글
자바스크립트 (JavaScript) - 31 : innerHTML과 타이머 함수 (0) | 2016.07.19 |
---|---|
자바스크립트 (JavaScript) - 30 : 함수 스코핑(functional scoping)과 클로저 (0) | 2016.07.19 |
자바스크립트 (JavaScript) - 28 : 함수 스코핑(functional scoping)과 클로저 (0) | 2016.07.19 |
자바스크립트 (JavaScript) - 27 : 콜백 함수 (0) | 2016.07.19 |
자바스크립트 (JavaScript) - 26 : 내부 함수 (0) | 2016.07.19 |