자료형, 스코프, 클로저

JavaScript · 2021. 5. 28. 21:18

원시 타입과 참조 타입

원시 타입

  • number, boolean, undefined, string, bigint, symbol, (null)
  • 할당 시 값을 복사
  • 기존 데이터에 영향 x

참조 타입

  • array, object, function
  • 할당 시 주소를 복사
  • 기존 데이터에 영향 o
  • 동적으로 데이터 사이즈 변경이 가능(heap에 데이터 저장)

스코프

정의

  • 변수의 유효범위
  • 안쪽에서 바깥쪽으로만 접근 가능
  • 중첩이 가능
  • 가장 바깥쪽 스코프는 전역(Global) 스코프, 그외엔 지역(local) 스코프
    • 전역 스코프에 선언된 변수는 브라우저의 window 객체에도 저장된다.
  • 지역 변수는 전역 변수보다 우선순위가 높다.
    • 선언 없는 변수 할당을 방지하기 위해 'use strict'를 js 파일에 작성할 수 있다.

종류

  • 블록 스코프(중괄호 {}로 구분)
  • 함수 스코프
    • 화살표 함수는 해당 x
    • var키워드는 함수 스코프만 따른다.

클로저

정의

  • "외부함수에서 선언된 변수에 접근할 수 있는 내부함수"
  • 함수와 함수가 선언된 어휘적(lexical) 환경=(스코프)의 조합
    • 이 환경은 클로저가 생성 된 시점 의 유효 범위 내에 있는 모든 지역 변수로 구성
  • 외부함수의 실행이 종료된 후에도, 클로저는 함수가 선언된 어휘적 환경에 접근할 수 있다.

목적

  • 특정 데이터를 스코프 안에 가두기 (캡슐화)
  • 전역 변수 사용 최소화하기(side effect 방지)
  • 함수 재사용성 극대화(모듈화)

단점

  • 함수 실행 종료 후에도 메모리 상에 남아 있게 되어 남발할 경우 퍼포먼스가 저하될 수 있다.

참고: 코드스테이츠 유어클래스