현재 '모던 자바스크립트 Deep Dive'를 통해 자바스크립트를 학습하고 있습니다. 본 포스트는 해당 내용에 대한 정리를 목적으로 합니다.
- 컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다.
- 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체이다.
- 각 셀은 고유의 메모리 주소를 갖는다.
- C언어의 경우, malloc과 같이 직접적으로 메모리 주소에 접근할 수 있다.
JS의 경우, 직접적으로 메모리 주소에 접근할 수 없다.
- 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다. 값의 위치, 메모리 주소를 가리키는 상징적인 이름이다.
(기억하고 싶은 값을 메모리에 저장하고, 저장된 값을 읽어 들여 재사용하기 위한 것이 변수) - 변수에 값을 저장하는 것은 할당(대입, 저장)이라 한다.
- 식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말한다.
(식별자 = 변수 이름) - 식별자가 기억하는 건 값이 아닌 메모리 주소이다.
- 변수, 함수, 클래스 등의 식별자는 선언에 의해 식별자의 존재를 알린다.
- 변수 선언할 때는 var, let, const 키워드를 사용한다.
- 변수를 선언 하는 방식
예) var score; 의 경우
1. 변수 이름(score)을 등록하고 값을 저장할 메모리 공간을 확보한다. 확보된 메모리 공간엔 암묵적으로
undefined라는 값이 암묵적으로 할당된다.
(var의 경우, 변수 선언은 선언 단계와 초기화 단계가 동시에 진행됨)
2. 변수 이름은 어디에 저장되는가?
실행 컨텍스트 내에 키/값 형식의 객체로 등록되어 관리됨
예) console.log(score); // undefined
var score; // 변수 선언문
1. 변수 선언이 뒤에 있는데 undefined가 출력되는 이유는?
변수 선언이 소스코드가 한줄씩 순차적으로 실행되는 시점, 런타임이 아니라 그 이전 단계에서 먼저 실행된다.
(변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 특징을 변수 호이스팅variable hoisting이라고 한다.) - 값의 할당
1. 할당 연산자 =
할당 연사자는 우변의 값을 좌변의 변수에 할당한다.
변수 선언은 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 먼저 실행되지만 값의 할당은 소스코드가 순차적으로 실행되는 시점인 런타임에 실행된다.
예) console.log(score); // undefined
var score = 80; // 변수 선언 및 값의 할당
console.log(score); // 80
변수 선언은 런타임 이전에 먼저 실행되고,
값의 할당은 런타임에 실행된다. - 값의 재할당
변수를 선언할 때, 값의 할당, 재할당을 할 때마다 새로운 메모리 공간을 확보하고 저장하는 방식이다.
- 네이밍 규칙
1. 변수, 함수는 카멜 케이스
예) firstName
2. 생성자 함수, 클래스는 파스칼 케이스
예) FirstName
'javascript > Deep Dive' 카테고리의 다른 글
3. 데이터 타입 (0) | 2022.08.22 |
---|---|
2. 표현식과 문 (0) | 2022.08.22 |