자바스크립트의 변수 개발자로서의 Berry

  자바스크립트에서 변수파트는 재미있는 이야기가 가득합니다. 주의깊게 살펴보세요!



변수의 타입 variable type

  자바스크립트는 형강도type strength가 낮은 언어입니다. 그러므로 변수에 어떠한 데이터 타입도 담을 수 있습니다. 예를들어

var i = 40;
i = "my age";

위와 같은 표현은 자바스크립트에서 적법한 문장입니다. 만약 여러분이 귀찮아서 var 키워드를 쓰지 않을지라도 똑똑한 자바스크립트는 묵시적으로 해당 변수를 선언해줍니다. 대신 써주는 것이죠. 이와 같이 자바스크립트는 var 키워드를 붙이는 명시적 변수 선언과 var 키워드를 생략하고 초기화를 통한 묵시적 변수 선언이 있습니다. 만약 초기화되지 않은 변수를 선언하고 값을 읽는 행위를 한다면 변수는 undefined 값을 뱉어낼겁니다. 그리고 이것은 중요한 이야긴데, 명시적으로 선언된 변수와 묵시적으로 선언된 변수에는 미묘한 차이가 있습니다.




변수의 유효범위 vriable scoping

  변수는 선언된 위치에 따라 사용될 수 있는 범위가 정해집니다. 프로그램 최상단에 선언되어 어느 곳에서나 접근이 가능한 전역변수global variable 와 함수의 내부에서 선언되어 그 함수내에서만 접근이 가능한 변수를 지역변수local variable 이라고 부르죠. 이러한 특성은 아래의 소스로 확인할 수 있습니다.


var scope = "global variable";

function inside() {
        var scope = "local variable" ;
        alert (scope);  // local variable을 출력합니다.
}

alert (scope);  // global variable을 출력합니다.


이것은 일반적인 전역변수와 지역변수입니다. 정확히 여러분 생각대로 동작하죠. 하지만 묵시적암묵적인 변수 선언을 이용하면 조금 다른 결과가 나타나게 됩니다.



scope = "global variable";  // 초기화를 통해 묵시적으로 선언된 변수

function inside() {
        scope = "local variable"// 초기화를 통해 묵시적으로 선언되길 바랬으나 사실은 전역변수를 참조
        alert (scope);  // local variable을 출력합니다.
}

alert (scope);  // local variable을 출력합니다.


자바스크립트는 var 키워드를 쓰지 않아도 변수가 자동적으로 선언되므로 종종 생략하게 됩니다. 그러나 예상밖에도 이렇게 선언된 변수는 모두 전역변수가 되며 이것은 곧 이펙트를 발생시킬 가능성이 낳는 꼴이죠. 묵시적으로 선언된 변수는 모두 전역변수가 됩니다. 전역부에서 선언을 하지 않았더라도 전역변수로 선언되기 때문에 함수내에서 사용될 변수는 모조리 var 키워드를 붙여주는 것이 좋습니다.


  이번에는 이정도로 마무리할까 하네요. 사실 이것 외에 진짜 알짜배기 어휘적 유효범위가 남아있습니다. 그러나 이것은 자바스크립트의 함수에 대한 이해가 조금 필요하므로 함수파트를 설명한 후 진행하겠습니다.




THinkBerry의 생각열매를 함께 나눠요. ThinkBerry.co.kr
TAG

Leave Comments


profileThinkberry에 오신것을 환영해요~ 

Recent Trackback

오늘:
4,095
어제:
3,552
전체:
76,325