본문 바로가기
WEB/JavaScript

유효범위

by 노랑파랑 2016. 10. 12.
반응형

유효범위 (scope) : 변수와 매개변수의 접근성과 수명. 


유효범위1



JavaScript 유효범위의 특징

(1). 함수 단위의 유효범위

(2). 변수명 중복 허용

(3). var 키워드 생략

(4). 렉시컬 특성


(1), (2) 함수 단위의 유효범위, 변수명 중복

유효범위2                   유효범위3

* 지역변수의 유효점위는 함수 안이고 전역변수의 유효범위는 애플리케이션 전역.

* 지역변수와 전역변수가 동시에 정의되어 있다면 지역변수가 우선.

* Java와 달리 함수에 대한 유효범위만을 제공하여 지역변수가 함수에서만 유효하다. (Java는 블록{ }에 대한 유효범위를 제공)


(3) var 키워드 생략

                

* 지역변수에 'var'을 쓰지 않는다면 전역변수가 된다.

* 여러 이유로 값이 변할 수 있기때문에 되도록 전역변수를 쓰지 않는 것이 좋다.


 - 전역변수를 사용해야 하는 경우 객체를 속성으로 변수를 관리하는 방법을 사용한다.

전역변수


또는 아예 전역변수를 사용하고 싶지 않다면, 익명함수를 호출하여 그 함수의 지역변수로 만든다.

지역변수



(4) 렉시컬 특성

렉시컬               렉시컬2

* 렉시컬 : 함수 실행 시 유효범위를 함수 실행 환경이 아닌 함수 정의 환경으로 참조하는 특성

* 좌측 코드는 두 함수 모두 전역에서 생성된 함수이기 때문에 함수 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