모던 자바스크립트 Deep Dive 책의 4장을 읽고 정리한 글이다.
10 + 20
10
과 20
은 메모리 상의 임의의 주소에 저장된 뒤, CPU가 이 값을 읽어와 연산을 수행함. 30
도 메모리의 임의 주소에 저장됨. 💡 따라서, 변수를 통해 명명된 식별자로 값을 읽고 쓸 수 있는 메커니즘을 제공하며, 직접 주소를 다루는 위험을 방지함.
ReferenceError
가 발생._
), 달러 기호($
) 사용 가능 let
, class
, return
등)는 식별자로 사용할 수 없음 // 카멜 케이스 (camelCase)
var firstName;
// 스네이크 케이스 (snake_case)
var first_name;
// 파스칼 케이스 (PascalCase)
var FirstName;
// 헝가리언 케이스 (typeHungarianCase)
var strFirstName; // type + identifier
var $elem = document.getElementById('myId'); // DOM 노드
var observable$ = fromEvent(document, 'click'); // RXJS 옵저버블
변수 선언이란 값을 저장하기 위한 메모리 공간을 확보하고, 그 공간을 특정 이름(식별자)에 연결해 사용할 수 있게 준비하는 과정
자바스크립트에서 변수 선언 시 사용할 수 있는 키워드는 var
, let
, const
undefined
를 할당해 초기화함.이때, 변수의 이름과 값은 실행 컨텍스트라는 곳에 등록되어 관리됨.
실행 컨텍스트는 자바스크립트 엔진이 소스코드를 평가하고 실행하기 위해 필요한 환경을 구성하고, 그 결과를 실제로 관리하는 영역임.
var
로 선언된 변수는 선언 단계와 초기화 단계가 동시에 진행됨. undefined
가 할당되어 가비지(쓰레기) 값을 방지함.console.log(score); // undefined
var score; // 변수 선언문
undefined
가 출력됨. console.log(score); // undefined
var score = 80; // 변수 선언과 값의 할당
console.log(score); // 80
undefined
로 초기화가 끝난 상태임. 80
이 할당되며 변수의 값이 undefined
에서 80
으로 변경됨. 💡
const
키워드로 선언한 변수는 재할당이 금지되어, 사실상 상수로 사용함.
var
, let
, const
키워드를 상황에 맞춰 사용 let
과 const
는 var
의 단점을 해결하기 위해 ES6에서 도입