[ JS ]Deep-Dive 4장

김재민·2022년 5월 21일
0
post-thumbnail

변수

컴퓨터는 CPU를 사용해 연산하고 메모리를 사용해 데이터를 기억한다.

메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체다. ( 메모리 === 데이터를 저장하는 셀집합)

메모리 셀 하나의 크기는 1바이트(8비트)이며, 1바이트 단위로 데이터를 저장하거나 읽는다.

각각의 셀은 고유의 메모리 주소를 가진다. 이 메모리 주소는 메모리 공간의 위치를 나타낸다.

메모리 셀에 임의 위치에 기억되고 CPU는 이값을 읽어 들여 연산을 수행한다.

메모리셀은 연산되어 나온 결과값을 재사용해서 사용할 수 없다.

만약에 연산된 결과값을 재사용하고 싶다면 직접 결과값이 저장된 메모리공간에 접근해야 사용이 가능한데

이것은 매우 위험한 일이다. 따라서 자바스크립트는 개발자가 직접적인 메모리 제어를 허용하지 않는다.

게다가 코드가 실행될때마다 저장되는 메모리 주소는 달라진다. 따라서 그냥 직접적인 메모리를 제어해서 사용할

생각은 안하는것이 좋다. 그래서, 기억하고싶은 값을 메모리에 저장하고 읽어드리고 재사용하기 위해서 변수라는것을 사용한다. 변수는 값의 위치를 가리키는 하나의 주소라고 생각하면 된다.

즉, 그 값은 여기 주소에 가면 있습니다 라고 하는것과 같다.

변수에 값을 저장하는것을 할당이라고 하고 , 변수에 저장된 값을 읽어드리는 것을 참조라고 한다.

그리고 변수의 이름을 식별자라고도 부른다. 여기서 중요한것은 식별자 즉 변수는 값을 기억하는게 아니라 주소를 기억한다는 것을 알아두자.

const jaemin = 10; === jaemin => 주소 => 10

변수가 할당되는 과정

선언단계 ⇒ 초기화 단계 ⇒ 할당단계

먼저 선언단계에서는 변수이름을 등록하고 변수라는것이 선언되는 단계이고,

초기화 단계는 변수의 깨끗한 공간을 확보하기위한 단계로 자바스크립트의 특성상 이때 undefined를 할당하게 된다. 만약에 초기화단계를 거치지않고 변수의 값을 바로 할당하게 되면 이전에 사용했던 값이 남이 있을 수 있는데 이것을 쓰레기값 이라고 한다. 따라서 메모리 공간을 확보한 다음 할당단계를 거치는 것.

변수 선언의 실행 시점과 변수 호이스팅


console.log(score) // undefined

var score; // 변수 선언문

자바스크립트 코드는 인터프리터에 의해 한 줄씩 순차적으로 실행 되는데 위에서부터 차례대로 실행된다.

그 이유는 변수 선언이 소스코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임이 아니라 그 이전 단계에서 먼저 실행되기 때문이다. 이것이 호이스팅이다.

자바스크립트엔진은 소스코드를 한 줄씩 순차적으로 실행하기에 앞서 먼저 소스코드의 평가 과정을 거치면서 소스코드를 실행하기 위한 준비를 한다. 이때 소스코드 실행을 위한 준비 단계인 소스코드의 평가 과정에서 자바스크립트 엔진은 변수 선언을 포함한 모든 선언문을 소스코드에서 찾아내 먼저 실행한다. 그리고 다음부터 차례대로 읽어나간다.

네이밍 컨센션

// 카멜 케이스
const getUserName;

//스네이크 케이스
const get_user_name;

//파스칼 케이스
const GetUserName;

//헝가리언 케이스
const strFirstName; // type + identifier
const $elem = document.getElementById('my') // DOM 노드
profile
Junior Front-end engineer

0개의 댓글