JavaScript

자바스크립트 (JavaScript) - 28 : 함수 스코핑(functional scoping)과 클로저

n.han 2016. 7. 19. 13:56

- JavaScript에서의 scope와 클로저

 

1) 로컬 변수, var과 글로벌 변수

 

<script>

        function test() {

        var myName = 'longlee';

        }       

        test();

        alert(myName);

</script>

<script>

        function test() {

        myName = 'longlee';

        }       

        test();

        alert(myName);

</script>

 

위의 첫 번째 예제는 var 키워드를 통해서 선언한 변수이고, 두 번째 예제는 var 키워드를 사용하지 않고

 

선언과 동시에 초기화한 변수이다(var 키워드를 사용하지 않으면 선언과 동시에 초기화를 해주어야 한다.).

 

첫 번째 예제는 에러를 발생 시키는데, 두 번째는 에러 없이 작동한다. 그 이유는 무엇일까?

 

그 이유는 var 키워드를 사용하지 않고 선언한 변수는 글로벌 변수이기 때문이다.

 

즉 첫 번째 예제의 변수는 함수 로컬 변수이기 때문에 사용할 수 없고,

 

두 번째 예제의 변수는 글로벌 변수이기 때문에 사용할 수 있는 것이다.