선언과 스코프

선언과 스코프

선언이란

연산의 대한 결과, 함수를 메모리에 할당하는 것
  1. 선언: 변수이름으로 메모리 공간을 확보
  1. 초기화: 변수에 undefind를 할당하여 초기화
  1. 할당: 초기화된 변수에 값을 할당
 

선언 키워드

var

  1. ES5에서 사용되어왔음
  1. 중복선언이 가능 (이전 선언을 덮어씌우기 가능)
  1. 선언적함수와 함께 호이스팅되어 변수선언 전에 참조가능하다.
  1. 함수레벨 스코프(블록레벨 스코프의 전역변수화)

const

  1. ES6이후 추가
  1. 중복선언이 불가능
  1. 런타임시 선언과 초기화 단계가 분리되어 호이스팅 되지 않는 것 처럼 작동한다.
  1. 값을 재할당 불가

let

  1. ES6이후 추가
  1. 중복선언이 불가능
  1. 런타임시 선언과 초기화 단계가 분리되어 호이스팅 되지 않는 것 처럼 작동한다.
  1. 값을 재할당 할 수 있다.
 

스코프란

다른 코드가 식별자인 자신을 참조할 수 있는 유효범위, 즉 식별자의 유효범위
명칭
범위
특징
전역 스코프
코드의 가장 바깥영역
어디에서든 참조가능
지역 스코프
함수 내부
지역과 하부 지역에서만 참조가능

렉시컬 스코프(static scope)

스코프는 함수의 실행시가 아니라 선언시에 결정된다.
ex) 클로저에서 반환된 내부함수가 내부의 변수에 접근 할 수 있는 것은 스코프가 함수 선언시에 결정되었기 때문이다.
 

함수레벨 스코프

함수 내부에서 선언된 변수에는 외부 함수에서 접근할 수 없다.
 

블록레벨 스코프

블록{} 내부에서 선언된 변수는 블록 외부에서 접근할 수 없다.
 

괄호 종류

  • 대괄호 []
  • 중괄호 {}
  • 소괄호 ()
 

 
참고
모던 자바스크립트 Deep Dive 책