변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념이며, 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다. 쉽게 말해 값의 위치를 가르키는 상징적인 이름이다.
식별자란? 어떤 값을 구별해서 식별할 수 있는 고유한 이름
변수 선언이란? 변수 생성을 의미하며 메모리 공간을 확보하고 변수 이름과 확보된 메모리 공간의 주소를 연결 해서 저장할 수 있게 준비한다.
자바스크립트 코드는 인터프리터에 의해 한 줄씩 순차적으로 실행된다.
💡변수 선언의 실행 시점: 변수 선언이 소스코드가 한줄씩 순차적으로 실행되는 시점 즉 런타임(runtime)이 아니라 그 이전 단계에서 먼저 실행된다.
❗ 변수 호이스팅(hoisting): 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅이라 한다.
/* 변수 선언문보다 변수 참조코드가 앞에 있는 경우 */
console.log(score); // undefined
var score;
값의 할당이란? 변수에 값을 할당할때 연산자 =을 사용하며 할당 연산자는 우변의 값을 좌변의 변수에 할당한다.
var score; //변수 선언과 값의 할당
score = 90; // 값의 재할당
var score = 90; // 변수 선언과 값의 할당
값의 재할당이란? 이미 값이 할당되어 있는 변수에 새로운 값을 또다시 할당하는것을 의미한다.
var score = 80; //변수 선언과 값의 할당
score = 90; // 값의 재할당
=> const 키워드는 값의 재할당이 금지되기에 상수로서 단 한번만 할당 가능함
가비지 콜렉터(Garbage Collector): 메모리 공간을 주기적으로 검사하여 어떤 식별자도 참조하지 않아 더 이상 사용되지 않는 메모리를 해제시킨다. 자바스크립트는 가비지 콜렉터를 내장하고 있는 매니지드 언어로서 가비지 콜렉터를 통해 메모리 누수를 방지한다.
매니지드 언어 / 언매니지드 언어
1. 매니지드 언어(Managed Language): C언어 같이 개발자가 명시적으로 메모리를 할당하고 해제하기 위해 malloc()과 free() 같은 low-level 메모리 제어기능을 제공함. 개발자가 주도하여 메모리를 제어할 수 있어 높은 수준의 최적화도 가능하지만 그만큼 오류가 발생할 위험도도 높다.
2. 언매니지드 언어(Unmanaged Language): 자바스크립트가 여기에 해당되며 메모리의 할당 및 해제를 위한 메모리 기능 관리 기능을 언어 차원에서 담당하고 개발자의 직접적인 메모리 제어를 허용하지 않는다. 더 이상 사용하지 않는 메모리의 해제는 가비지 콜렉터가 수행한다. 어느 정도의 일정한 생산성을 확보할 수 있어 안정적이나, 성능 면에서 어느 정도 손실을 감수해야 한다.
하나 이상의 영어 단어로 구성된 식별자를 가독성 좋게 만들기 위해 규정한 명명 규칙
// 카멜 케이스(camelCase) : 주로 변수, 함수명
var firstName;
// 파스칼 케이스(PascalCase) :주로 생성자 함수, 클래스명
var FirstName;
// 스네이크 케이스(snake_case)
var first_name;
// 헝가리언 케이스 (typeHungarianCase)
var strFirstName; // type + identifier
var $elem = document.getElementById("myId"); // DOM 노드
var observable$ = fromEvent(document, "click"); // RxJS 옵저버블
모던 자바스크립트 책을 혼자 읽기 막막해서 스터디를 시작했다. 스터디 팀원들과 각자 정리하며 공부하니까 내가 놓쳤던 부분을 다른분들이 정리한 글을 보면서 이해하게 되서 좋은거 같다 팀 과제로 너무 바쁜 기간이지만 그래도 나를 위한 공부니까 매일 꾸준히 해나가야겠다.
모던 자바스크립트 Deep Dive 04장 변수 (34p ~ 49p)