1장부터 3장은 해당 블로그에서 정리하는 것을 넘어가고, 4장부터 요약 및 정리를 시작합니다👏
변수 선언이란 값을 저장하기 위한 메모리공간을 확보하고, 변수 이름과 메모리공간을 맵핑하는 행위를 의미한다. 변수 선언에 의해서 확보된 메모리 공간은 변수가 해제되기 전까지 누구도 그 공간을 사용할 수 없도록 보호된다.
변수선언에는 var, let, const 등을 사용한다
자바스크립트 엔진은 변수 선언을 2단계에 거쳐 수행한다.
var value; // 선언
value = 80; // 할당
var 키워드를 사용한 변수 선언은 선언 단계와 초기화 단계가 동시에 진행되기 때문에, var value; 와 같이 변수에 값을 할당하지 않아도 선언에 의해 확보된 메모리 공간에는 undefined라는 값이 암묵적으로 할당되어 초기화된다.
⇒ 일반적으로 초기화 단계를 거치지 않으면 메모리 공간에는 이전에 다른 애플리케이션이 사용했던 쓰레기 값이 남아 있을 수 있으나, var 키워드는 암묵적 초기화를 수행하기 때문에 쓰레기 값을 사용하게 되는 위험으로부터 안전하다✅.
console.log(value);
var value;
변수 선언문보다 변수를 참조하는 코드가 앞쪽에 위치한다. console.log(value);가 실행되는 시점에서는 아직 score 변수의 선언이 실행되지 않았으므로 참조에러가 발생할 것이라 예상하겠지만
에러가 발생하지 않고 undefined가 출력된다. Why?
let, const, class 모두 호이스팅은 일어나지만 값을 할당하지 않기 때문에 var키워드를 제외한 다른 키워드는 Reference error 발생
var value; // 변수 선언
score = 80; // 값의 할당
var value = 80; // 변수 선언과 값의 할당
var value = 80;으로 작성해도 자바스크립트 엔진은 2개의 문으로 나누어 각각 실행한다.
console.log(value); // undefined
var score = 80;
console.log(value); // 80
변수에 값을 할당할 때는 이전 값 undefined가 저장되어 있던 메모리 공간을 지우고 그 메모리 공간에 할당 값 80을 새로 저장하는 것이 아니라, 새로운 메모리 공간을 확보하고 그 곳에 80을 저장한다.
var 키워드로 선언한 변수는 값을 재할당 할 수 있다. (const 키워드-15장-로 선언한 변수는 재할당 X)
var value = 80; // 변수 선언과 값의 할당
value = 90; // 값의 재할당
undefined와 80은 어떤 식별자와도 연결되어 있지 않다. 이런 값들은 추후 가비지 콜렉터에 의해 메모리에서 자동 해제되나, 언제 해제될지는 예측할 수 없다.
await | break | case | catch | class |
---|---|---|---|---|
const | continue | debugger | default | delete |
do | else | enum | export | extends |
false | finally | for | function | if |
implements | import | in | instanceof | interface |
let | new | null | package | private |
protected | public | return | super | static |
switch | this | throw | true | try |
typeof | var | void | while | with |
yield |
var firstname;
var firstName;
var FIRSTNAME;
네이밍 컨벤션 : 자바스크립트에서는 일반적으로 카멜 케이스와 파스칼 케이스를 다음의 용도로 사용한다.
1. 카멜 케이스: 변수, 함수의 이름
2. 파스칼 케이스: 생성자 함수, 클래스의 이름