출처 : 모던자바스크립트 Deep-Dive
변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
즉, 값의 위치를 가리키는 (메모리의) 상징적인 이름이다.
변수가 존재하면 , 메모리를 직접 접근 할 수 없는 구조에서 , 값을 재사용 할 수 있다.
식별자는 값이 아니라 값이 저장되어있는 메모리주소를 저장하고있다.
즉, 식별자는 메모리 주소에 붙인 이름이다.
식별자 ⊃ 변수명, 함수명, 객체명, 클래스명
변수 선언은 소스코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임이 아니라 그 이전 단계에서 먼저 실행된다.
변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅 이라고 한다.
변수뿐만아니라, 함수, 클래스 등이 모두 호이스팅 가능하다.
⭐️ But!!! ES6부터 나오는 화살표 함수는 호이스팅이 불가능하다.