-
유효범위 - 함수지향 | 생활코딩Javascript/ECMAScript 2009 (ES5) 2020. 2. 2. 20:40반응형
[출처 : https://opentutorials.org]
유효범위
- 함수 밖에서 변수를 선언하면 그 변수는 전역변수, 함수 안에서 변수를 선언하면 그 변수는 지역역변수
- 지역변수의 유효범위는 함수 안이고, 전역변수의 유효범위는 에플리케이션 전역
- 같은 이름의 지역변수와 전역변수가 동시에 정의되어 있다면 지역변수가 우선
- var를 사용하지 않은 같은 이름의 지역변수는 전역변수가 된다.
지역변수의 사용을 권장
- 함수 안에 전역 변수를 사용하고 있는데 누군가에 의해 전역 변수의 값이 달라지면 함수의 동작도 달라지고 버그의 원인.
- 함수의 핵심은 로직의 재활용인데 전역변수를 사용한 함수는 다른 에플리케이션에 이식하는데도 어려움을 초래한다.
전역변수의 사용
- 로직을 모듈화하는 일반적인 방법이다.
- 하나의 객체를 전역변수로 만들고 객체의 속성으로 변수를 관리하는 방법을 사용한다.
var myApp = {}; myApp.info = {'name' : null, 'age' : null} myApp.info.name = "AGAL";
- 전역변수를 사용하고 싶지 않다면 아래와 같이 익명함수를 호출함으로서 이러한 목적을 달성할 수 있다.
(function(){ var myApp = {}; myApp.info = {'name' : null, 'age' : null} myApp.info.name = "AGAL"; }())
유효범위의 대상(함수)
- 자바스크립트는 함수에 대한 유효범위만을 제공한다. * 많은 언어들이 블록에 대한 유효범위를 제공
정적 유효범위
- 자바스크립트는 함수가 선언(정의)된 시점에서의 유효범위를 갖는다. * 사용된 시점이 아님
- 이러한 유효범위의 방식을 정적 유효범위(static scoping), 혹은 어휘적 유효범위(lexical scoping)이라고 한다.
var i = 5; function a(){ var i = 10; b(); // 사용된 시점 } function b(){ document.write(i); // 선언(정의)된 시점 } a(); // return 5
반응형'Javascript > ECMAScript 2009 (ES5)' 카테고리의 다른 글
arguments - 함수지향 | 생활코딩 (0) 2020.02.04 클로저 - 함수지향 | 생활코딩 (0) 2020.02.03 값으로서의 함수와 콜백 - 함수지향 | 생활코딩 (0) 2020.02.03 배열 ... 정규표현식 -자바스크립트 기본 | 생활코딩 (0) 2020.02.02 소개 ... 배열 - 자바스크립트 기본 | 생활코딩 (0) 2020.02.01