Birthday Bora
변수 본문
공부한 걸 혼자서 정리하는 자바스크립트

[ 본 내용은 공부한 내용을 제 생각대로 간략하게 정리를 해서 올리는 글입니다. ]
변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
간단하게는 변수는 프로그래밍 언어에서 값을 저장하고 참조하는 매커니즘으로 값의 위치를 가리키는 이름.
[ 하나의 값을 저장하기 위한 수단. ]
// 변수 선언
const Birthday = "생일";
let Birthday = "생일";
var Birthday = "생일";
// 값 할당
let Birthday; // 변수 선언
Birthday = "생일"; // 값의 할당
let Birthday = "생일"; // 변수 선언과 값의 할당
Birthday = "두 번째 생일"; // 값 재할당
// var, let -> 변수
// const -> 상수
Birthday는 변수 이름을 뜻하며 "생일"은 변수의 값을 표현한다.
변수에 값을 저장하는 것이 할당(저장)이며 저장된 값을 읽어 들이는 것을 참조라고 한다.
변수를 사용하려면 반드시 선언이 필요한데 변수를 선언할 때는 var과 let, const 키워드를 사용한다.
var은 let, const 키워드가 도입되기 전에 사용하는 유일한 키워드였다.
[ 만약 값을 재할당할 수 없어서 변수에 저장된 값을 변경할 수 없다면 변수가 아니라 상수라고 한다 ]
하지만 var은 여러 단점이 있어서 let와 const를 사용하고 있다.
var은 같은 변수 이름이 여러 번 실행되었음에도 오류는 발생하지 않는다.
만약 큰 프로젝트를 하고 있을 때 똑같은 이름의 변수를 몇 번이나 사용해도 오류는 발생하지 않아서
어디서 잘못된 건지 찾기가 힘들다.
책 내용...
console.log(birthday); // undefined
var birthday; // 변수 선언문
위를 보면 console.log 가 가장 먼저 실행되고 순차적으로 다음 줄에 있는 코드를 실행한다.console.log 가 실행된 시점에는 birthday 변수의 실행이 되지 않았으므로 에러가발생할거 같지만 에러가 발생하지 않고 undefined 가 출력된다.
그 이유는 변수 선언이 소스코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임이 아니라 그 이전 단계에서 먼저 실행되기 때문이다.
이는 변수선언 ( 선언 단계와 초기화 단계 )이 소스코드가 순차적으로 실행되는 런타임 이전 단계에서먼저 실행된다는 증거다.
이처럼 변수 선언문이 코드의 선두로 끌어 올려진 것 처럼 동작하는 자바스크립트의 고유의 특징을변수 호이스팅 이라 한다.
사실 변수 선언뿐 아니라 var, let, const, function, class 키워드 등을 사용해서 선언하는모든 식별자 ( 변수, 함수, 클래스 등 )은 호이스팅이 된다.
모든 선언문은 런타임 이전 단계에서 먼저 실행되기 때문이다.
추가로 네이밍 컨벤션이 있는데 이것은 영어 단어로 구성된 식별자를 만들 때 가독성 좋게 구분하기 위해규정한 명명 규칙.
< 자주 사용하는 네이밍 컨벤션 >
// 카멜 케이즈 ( cmaelCase )
let birthDay;
// 스네이크 케이스 ( snake_case )
let birth_day;

저는... 카멜 케이즈가 제일 좋은거 같아요