변수

2014. 10. 7. 18:02 나홀로스터디/JS 완벽가이드


4. 변수

이 포스팅은 "프론트엔드 개발자를 위한 자바스크립트(2013 인사이트, 한선용 옮김)"에서 발췌 요약한 것입니다.
 
4.1 변수타입
4.2 변수선언
4.3 변수의 유효범위
4.4 기본타입과 참조타입
4.5 가비지 컬렉션
4.6 변수와 프로퍼티
4.7 변수의 유효 범위(재해석)

변수는 프로그램에서 쓰이는 데이터 값을 저장하고 다루는데 사용된다.


4.1 변수타입
자바스크립트 변수는 타입이 고정되어 있지 않아 어떠한 데이터 타입의 값이라도 담을수 있다.


4.2 변수선언
자바스크립트에서 어떤 변수를 사용하려면 일단 그 변수를 선언해야만 하는데 만일 변수의 초기값을 지정하지 않을 경우 선언은 되지만 값이 저장되기 전까지 값은 undefined이다.

4.2.1 변수 선언의 반복과 생략
var 구문으로 같은 이름의 변수를 여러번 선언해도 무방하다.
var 구문으로 선언되지 않은 변수에 값을 할당하려 하면 자바스크립트가 암묵적으로 그 변수를 선언하게 되며 그 변수는 항상 전역 변수로 선언된다.

4.3 변수의 유효 범위
프로그램에서 그 변수가 정의되어 있는 영역을 맒한다. 전역변수의 유효 범위는 전역적이고 반면 어떤 함수안에서 선언된 변수는 오직 그 함수 안에서만 정의된다. 이런 변수를 지역변수라고 부르며 유효 범위도 지역적이다.
함수 내부에서는 지역 변수가 같은 이름의 전역 변수보다 우선적으로 사용된다.

4.3.1 블록 단위의 유효 범위는 없다.
함수 안에서 정의된 변수는 그것이 정의된 위치에 관계없이 항상 함수 전체에 걸쳐 유효하다.
지역변수는 함수 전체에 걸쳐서 정의되어 있지만 var 문이 실행되고 나서야 실체로 초기화 된다.

4.3.2 정의되지 않은 변수 vs 할당되지 않은 변수
선언되지 않은 변수를 읽으려고 하면 런타임 오류가 발생한다. 그러나 정의되지 않은 변수에 값을 할당할 때는 에러가 발생하지 않는다. 이경우에는 암묵적으로 해당 변수가 전역의 유효범위로 선언된다.

선언은 되었으나 아직 값이 할당되지 않은 변수를 읽으려고 하면 그 변수의 초기값 'undefined' 를 얻게 된다.


4.4 기본 타입과 참조 타입
고정된 메모리를 차지하는 기본 타입은 숫자, 불리언 값, null, undefined 이  있고, 참조타입은 객체(object), 배열, 함수가 있다.
기본 타입의 경우 변수에 실제 값이 저장되지만 참조 타입은 단지 참조만이 저장된다.


4.5 가비지 컬렉션
참조 타입은 크기가 고정되어 있지 않으므로 동적으로 할당되어야 하는데 자바스크립트에서는 프로그래머가 수동으로 메모리를 해제하도록 강제하지 않는 대신 가비지 컬렉션이라 불리는 기술에 의존한다.


4.6 변수와 프로퍼티
변수와 객체 프로퍼티는 같은 방법으로 할당되고 자바스크립트 표현식에서 동일한 방법으로 사용딘다.

4.6.1 전역 객체
자바스크립트 인터프리터가 구동되면 자바스크립트 코드를 실행하기 전에 전역객체를 생성하면서 미리 정의된 값들과 함수들을 참조하는 다수의 프로퍼티들을 초기화한다.
최상위코드, 즉 어떤 함수에도 속하지 않은 코드에서는 자바스크립트의  this 키워드를 사용해서 전역객체를 참조할수 있다.

4.6.2 지역변수 : 호출객체
지역변수는 어떤 객체의 프로퍼티에 해당하고 이 객체를 일컬어 호출 객체(call object)라고 부른다.
호출객체는 전역 객체에 비해 수명이 짧지만 쓰이는 목적은 동일하며 함수를 실행하는 동안 그 함수의 전달인자와 지역변수는 이 호출 객체의 속성으로 저장된다.

4.6.3 자바스크립트 실행 컨텍스트
실행 컨텍스트는 자바스크립트 코드가 실행되고 있는 컨텍스트를 말한다.




4.7 변수의 유효 범위(재해석)
모든 자바스크립트 실행 컨텍스트에는 유효 범위 체인(scope chain) 이라는 것이 있다.



 

'나홀로스터디 > JS 완벽가이드' 카테고리의 다른 글

문장  (0) 2014.10.16
표현식과 연산자  (0) 2014.10.13
데이터 타입과 값  (0) 2014.10.01
어휘구조  (0) 2014.09.24
자바스크립트 소개  (0) 2014.09.23
Copyright © HuckleberryM All Rights Reserved | JB All In One Designed by CMSFactory.NET