1.참조자료형
-참조자료형 (reference data type; 참조타입)에는 배열([]), 객체({}), 함수(function(){})가 대표적으로 있다. 참조 자료형의 변수에는 데이터가 보관되는 것이 아니고, 데이터가 위치한 곳(메모리상 주소)을 가리키는 주소가 저장된다. 그리고 이 데이터 보관함은 동적으로 변한다(사이즈가 늘었다가 줄었다 할 수 있다.) 이처럼 데이터는 별도로 관리되고, 우리가 직접 다루는 변수에는 주소가 저장되기 때문에 reference type이라고 불린다. 그리고 데이터 보관함은 heap이라고 부른다.
2.Scope
Scope란, 변수 접근 규칙에 따른 유효 범위
-> 안쪽 SCOPE에서 바깥쪽 SCOPE로는 접근할 수 있지만 반대는 불가능
-> SCOPE는 중첩이 가능함
-> 가장 바깥의 SCOPE는 특별히 전역 SCOPE(Global scope)라고 부름
-> Global scope의 반대말은 local scope이다. 전역의 반대말은 지역으로 전역이 아닌 다른 SCOPE는 모두 지역 SCOPE(local scope)이다.
-> 지역 SCOPE에서 선언한 변수는 지역변수, 전역 SCOPE에서 선언한 변수는 전역변수이다.
-> 지역변수는 전역변수보다 더 높은 우선순위를 가진다.
3. Scope의 종류
- 블록 스코프(block scope): 중괄호를 기준으로 범위가 구분된다. 블록스코프 안에서 선언된 변수는 중괄호 안에서만 쓸수있다.
- 함수 스코프 (fucntion scope): function 키워드가 등장하는 함수 선언식 및 함수 표현식은 함수 스코프를 만든다. ※단, 화살표 함수는 블록 스코프로 취급된다. 함수 스코프가 아니다.
4. Closure Function(클로저 함수)의 특징
- 함수를 리턴하는 함수 : 리턴값이 함수이다. MDN에서 정의하는 클로저 함수는 수와 함수가 선언된 어휘적 환경의 조합; 어휘적환경이란 변수 및 함수 선언의 형태이다.클로저의 핵심은 스코프를 이용해서, 변수의 접근 범위를 닫는 (closure; 폐쇄)데에 있다. 클로저는 리턴하는 함수에 의해 스코프(변수의 접근 범위)가 구분되므로, 변수가 선언된 곳이 매우 중요하다.
- 내부 함수는 외부 함수에 선언된 변수에 접근 가능하다. 외부 함수에서는 내부 함수에 접근이 불가하다.
- 데이터를 보존하는 함수이다. 외부 함수의 실행이 끝나더라도, 외부 함수 내 변수를 사용 할 수 있다. 일반적으로 함수는, 함수 실행이 끝나고 나면, 함수 내부의 변수를 사용할 수 없다. 하지만 클로저는 외부 함수의 실행이 끝나더라도, 외부 함수내 변수가 메모리상에 저장된다. (어휘적 환경을 메모리에 저장하기 때문에 가능한 일이다.)