# 자바스크립트 스코프
함수 스코프를 결정하는 방법은 두가지다.
1. 함수 호출시점
2. 함수 정의시점
자바스크립트에서는
함수 정의시점에 따라 상위 스코프를 결정한다.
함수가 호출된 위치는 상위 스코프 결정에 어떤
영향도 주지 않는다. 함수의 상위 스코프는
언제나 자신이 정의된 스코프다.
# 전역 변수
전역 변수의 무분별한 사용은 위험하다.
변수값이 변경되면서 프로그램 전체가
무너질 수 있기 때문이다.
모든 변수는 생명주기가 있다.
생성되어 메모리 공간을 점유하고,
변수가 소멸되면서 메모리 공간을
반납하는 주기가 있다.
전역 변수의 경우 자바스크립트 엔진에
의해 먼저 실행되어 undefined로 정의
되지만,
지역변수
지역 변수의 생명 주기는 함수의 생명주기와
정확히 일치한다.
변수의 생명 주기는 메모리 공간이 확보된
시점부터 메모리 공간이 해제되어 가용
메모리 풀이 반환되는 시점까지다.
전역변수
var 키워드로 선언한 지역변수는 전역 객체의
프로퍼티가 된다.
브라우저환경에서 전역객체는 window이므로
브라우저 환경에서 var 키워드로 선언한 전역
변수는 전역 객체 window의 프로퍼티다.
var 키워드로 선언한 전역 변수의 생명 주기는
전역객체의 생명주기와 일치한다.
변수의 무분별한 사용
변수 스코프는 좁으면 좁을 수록 좋다.
캡슐화
캡슐화 cencapsulation은 객체의 상태를
나타내는 프로퍼티와 프로퍼티를 참조하고
조작할 수 있는 동작인 메서드를 하나로
묶는 것을 말한다.
대부분의 객체지향 언어는
public, private, protected 키워드로
공개 범위를 제한할 수 있다.
ES6 모듈
ES6모듈을 사용하면 var 키워드로
더는 전역변수를 사용할 수 없다.
'Programming > JavaScript' 카테고리의 다른 글
JavaScript global variable을 최소로 사용해야 하는 이유 (0) | 2021.10.27 |
---|---|
JavaScript 기초 문법 #6 프로퍼티, 함수 일급객체, 프로토타입, 빌트인 객체, this, 실행 컨텍스트, 렉시컬 스코프, 클로저 (0) | 2021.10.25 |
JavaScript 기초 문법 #5 let, const 변수 (0) | 2021.10.20 |
JavaScript 기초 문법 #3 제어문, 객체, 함수 (0) | 2021.10.14 |
JavaScript 기초 문법 #2 제어문, 객체 (0) | 2021.10.14 |
JavaScript 기초 문법 #1 변수, 데이터타입, 연산자 (0) | 2021.10.14 |
댓글