21.02.26 TIL

J·2021년 2월 27일
0

원시(primitive) 자료

number / boolean / null / string / undefined

참조(reference) 자료

array(배열) / object(객체) / function

원시자료형 변수 - 데이터 크기와 관계없이 하나의 데이터(값)만 담는다.

참조자료형 변수 - 값이 아닌 '주소'를 저장

  • 원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담깁니다.
  • 그래서 참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용할 수 있습니다.

Scope

  • scope : 변수 접근 규칙에 따른 유효 범위 - 변수와 그 값이 어디서부터 어디까지 유효한지를 판단

    ex) 함수 내 : local scope(지역 변수) / 함수 밖 : global scope(전역 변수)

    local에서 global은 참조 불가능, but global은 하위 local 참조가능

    자연스럽게 local scope 는 global scope 보다 우선순위를 갖게 된다.

  • var : function scope 사용 - { } 밖의 함수 내 모든 변수 참조

  • let : block scope 사용 - { } 내

  • const : block scope 사용, but let 과 다르게 재정의 불가능 (ex: let a = a; → a = b → 'a 입력시 b 로 재정의), but const 는 이미 정의된 변수는 바꿀 수 없다.

  • 전역변수(global scope)를 대표하는 객체 window

  • var 로 선언된 변수는 window 객체와 연결됨

  • var 키워드는 함수 스코프의 유효범위를 가진다

  • var로 변수를 정의하면 함수 이외의 조건문이나 반복문 모두 전역변수로 선언됨!

1. 지역 스코프 / 전역 스코프 나누기

2. 선언된 변수 찾고 지역 / 전역 변수인지 명시시

3. 선언되지 않은 변수가 가르키는 변수 찾기(안에서 밖으로)

Closure

  • 외부함수의 변수에 접근할 수 있는 내부함수 aka 함수와 함수가 선언된 어휘적(lexical) 환경의 조합

  • 역할;
    - function factory
    - name spacing 을 해결

0개의 댓글