자바스크립트는 c언어나 java와 다르게 변수의 유형에 따라 변수선언을 다르게 할 필요없고 모든 변수는 var, let, const로 변수선언을 한다.
hoisting
javascript에서 변수 및 함수 선언이 스코프 최상단으로 끌어올려지는 현상
console.log(str1);
var str1 = "javascript";
console.log(str1);
undefined
javascript
error 대신 undefined라는 자료형이 나오는 이유가 hoisting 현상 때문
- undefined은 변수를 선언하고 값을 할당하지 않은 상태(컴퓨터)
null은 변수를 선언하고 빈 값을 할당한 상태(개발자)
코드 실행 시 작동하는 실제 모습
var str1;
console.log(str1);
str1 = "javascript";
console.log(str1);
변수선언 var
변수 재선언 및 재할당 가능 (호이스팅 일어남)
변수선언 let
변수 재선언 불가능 재할당 가능 (호이스팅 안됨)
변수선언 const
변수 재선언 및 재할당 불가능 (호이스팅 안됨)
var은 함수 스코프에서 유효합니다.
let, const는 블록 스코프에서 유효합니다.