원시 타입과 참조 타입
원시 타입
- number, boolean, undefined, string, bigint, symbol, (null)
- 할당 시 값을 복사
- 기존 데이터에 영향 x
참조 타입
- array, object, function
- 할당 시 주소를 복사
- 기존 데이터에 영향 o
- 동적으로 데이터 사이즈 변경이 가능(heap에 데이터 저장)
스코프
정의
- 변수의 유효범위
- 안쪽에서 바깥쪽으로만 접근 가능
- 중첩이 가능
- 가장 바깥쪽 스코프는 전역(Global) 스코프, 그외엔 지역(local) 스코프
- 전역 스코프에 선언된 변수는 브라우저의 window 객체에도 저장된다.
- 지역 변수는 전역 변수보다 우선순위가 높다.
- 선언 없는 변수 할당을 방지하기 위해
'use strict'
를 js 파일에 작성할 수 있다.
- 선언 없는 변수 할당을 방지하기 위해
종류
- 블록 스코프(중괄호
{}
로 구분) - 함수 스코프
- 화살표 함수는 해당 x
var
키워드는 함수 스코프만 따른다.
클로저
정의
- "외부함수에서 선언된 변수에 접근할 수 있는 내부함수"
- 함수와 함수가 선언된 어휘적(lexical) 환경=(스코프)의 조합
- 이 환경은 클로저가 생성 된 시점 의 유효 범위 내에 있는 모든 지역 변수로 구성
- 외부함수의 실행이 종료된 후에도, 클로저는 함수가 선언된 어휘적 환경에 접근할 수 있다.
목적
- 특정 데이터를 스코프 안에 가두기 (캡슐화)
- 전역 변수 사용 최소화하기(side effect 방지)
- 함수 재사용성 극대화(모듈화)
단점
- 함수 실행 종료 후에도 메모리 상에 남아 있게 되어 남발할 경우 퍼포먼스가 저하될 수 있다.
참고: 코드스테이츠 유어클래스
'JavaScript' 카테고리의 다른 글
DOM (Document Object Model) (0) | 2021.06.02 |
---|---|
Spread & Rest 파라미터 구문 & 구조 분해 할당 (0) | 2021.06.01 |
객체 기본 조회와 삭제 + for... in/for ...of (0) | 2021.05.27 |
배열 기본 메소드 (0) | 2021.05.25 |
자바스크립트 함수 (0) | 2021.05.24 |