index
③ 식별자(identifier)는 어떠한 의미가 있을까?
1. 변수란 무엇인가?
- 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이다.
- 상징적 이름인 변수>는 프로그래밍 언어의 컴파일러 또는 인터프리터에 의해 값이 저장된 메모리 공간의 주소로 치환되어 실행된다.따라서 개발자가 직접 메모리 주소를 통해 값을 저장하고 참조할 필요가 없고 변수를 통해 안전하게 접근할 수 있다.
- 식별자는 (값이 아니라) 메모리 주소를 기억하고 있다. 즉, 식별자는 값이 저장되어 있는 메모리 주소와 매핑 관계를 맺으며, 이 매핑 정보도 메모리에 저장된다.
2. 변수는 왜 필요한가?
메모리 주소를 통해 값에 접근하는 것은 치명적인 오류를 발생시킬 가능성이 높은 매우 위험한 일이다. 만약 실수로 운영체제가 사용하고 있는 값을 변경하면 시스템을 멈추게 하는 치명적인 오류가 발생할 수도 있기 때문이다.
3. 식별자(identifier)는 어떠한 의미가 있을까?
코드는 컴퓨터에게 내리는 명령이면서, 개발자를 위한 문서이기에 개발자의 의도를 나타내는 명확한 네이밍은 코드를 이해하기 쉽게 만들며, 이는 협업과 품질 향상에 도움을 준다.
“신중하게 네이밍을 만들자”
4. 자바스크립트 엔진의 변수 선언 과정을 이해해보자
- ① 선언단계: 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알린다.
- ② 초기화단계: 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화한다.
console.log(score); // undefined
let score;
변수선언(선언단계, 초기화단계)이 소스코드가 순차적으로 실행되는 런타임 이전 단계에서 먼저 실행된다. 이처럼 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅(variable hoisting)이라 한다.
Q. 변수 선언과 값의 할당은 어느시점에 이뤄지는가?
- ① 변수 선언은 런타임 이전
- ② 값의 할당은 런타임 이후
cosole.log(score); // undefined
let score; // ① 변수 선언
score = 80; // ② 값의 할당
console.log(score); // 80