Scope, 클로저함수

Purple·2021년 9월 9일
0

TIL

목록 보기
14/73

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의 종류

  1. 블록 스코프(block scope): 중괄호를 기준으로 범위가 구분된다. 블록스코프 안에서 선언된 변수는 중괄호 안에서만 쓸수있다.
  2. 함수 스코프 (fucntion scope): function 키워드가 등장하는 함수 선언식 및 함수 표현식은 함수 스코프를 만든다. ※단, 화살표 함수는 블록 스코프로 취급된다. 함수 스코프가 아니다.

4. Closure Function(클로저 함수)의 특징

  1. 함수를 리턴하는 함수 : 리턴값이 함수이다. MDN에서 정의하는 클로저 함수는 수와 함수가 선언된 어휘적 환경의 조합; 어휘적환경이란 변수 및 함수 선언의 형태이다.클로저의 핵심은 스코프를 이용해서, 변수의 접근 범위를 닫는 (closure; 폐쇄)데에 있다. 클로저는 리턴하는 함수에 의해 스코프(변수의 접근 범위)가 구분되므로, 변수가 선언된 곳이 매우 중요하다.
  2. 내부 함수는 외부 함수에 선언된 변수에 접근 가능하다. 외부 함수에서는 내부 함수에 접근이 불가하다.
  3. 데이터를 보존하는 함수이다. 외부 함수의 실행이 끝나더라도, 외부 함수 내 변수를 사용 할 수 있다. 일반적으로 함수는, 함수 실행이 끝나고 나면, 함수 내부의 변수를 사용할 수 없다. 하지만 클로저는 외부 함수의 실행이 끝나더라도, 외부 함수내 변수가 메모리상에 저장된다. (어휘적 환경을 메모리에 저장하기 때문에 가능한 일이다.)
profile
다시 보면, 더 많은 것들이 보인다.

0개의 댓글