유효범위 (scope) : 변수와 매개변수의 접근성과 수명.
JavaScript 유효범위의 특징
(1). 함수 단위의 유효범위
(2). 변수명 중복 허용
(3). var 키워드 생략
(4). 렉시컬 특성
(1), (2) 함수 단위의 유효범위, 변수명 중복
* 지역변수의 유효점위는 함수 안이고 전역변수의 유효범위는 애플리케이션 전역.
* 지역변수와 전역변수가 동시에 정의되어 있다면 지역변수가 우선.
* Java와 달리 함수에 대한 유효범위만을 제공하여 지역변수가 함수에서만 유효하다. (Java는 블록{ }에 대한 유효범위를 제공)
(3) var 키워드 생략
* 지역변수에 'var'을 쓰지 않는다면 전역변수가 된다.
* 여러 이유로 값이 변할 수 있기때문에 되도록 전역변수를 쓰지 않는 것이 좋다.
- 전역변수를 사용해야 하는 경우 객체를 속성으로 변수를 관리하는 방법을 사용한다.
또는 아예 전역변수를 사용하고 싶지 않다면, 익명함수를 호출하여 그 함수의 지역변수로 만든다.
(4) 렉시컬 특성
* 렉시컬 : 함수 실행 시 유효범위를 함수 실행 환경이 아닌 함수 정의 환경으로 참조하는 특성
* 좌측 코드는 두 함수 모두 전역에서 생성된 함수이기 때문에 함수 f1에서 함수 f2를 호출하면 실행이 된다.
* 우측 코드는 함수 f1에서 함수 f2를 호출했지만 변수 a는 5의 값을 출력했다.
그 이유는 렉시컬 특성으로 인해 함수 f2가 정의 될 때(7행)의 환경을 보기 때문에 참조하는 변수 a는 5가 된다.
'WEB > JavaScript' 카테고리의 다른 글
arguments (0) | 2016.10.12 |
---|---|
클로저 (0) | 2016.10.12 |
함수, 콜백, 비동기 처리 (0) | 2016.10.12 |
2016-10-11 공부한것 정리 1 (0) | 2016.10.12 |
2016-10-11 이론 정리 객체 지향 (0) | 2016.10.12 |