const 호텔에서 var let 파킹을 제공하는군요!
정말 고마워요!
오늘은 var let const를 중복선언, 스코프, 호이스팅의 관점에서 알아보자.
중복선언 : 가능!
-> 이게 말이 안되는일임
var imHappy = 'yes';
var imHappy = 'no';
console.log(imHappy) // no
한번 선언해도 다시 선언이 가능하다.
마지막에 선언된걸로 출력됨
스코프
이 친구는 함수단위(function)의 스코프를 가진다.
var name = 'hello'
function hi() {
var name = 'hi'
console.log(name) // hi
}
hi()
console.log(name) // hello
호이스팅 : 가능!
console.log(name); // undefined
var name = hi
중복선언 : 안됨!
스코프
블록단위의 스코프를 가진다.
{
let a = hi
}
console.log(a); //ReferenceError: a is not defined
호이스팅 : 가능!
중복선언 : 안됨!
초기화와 선언을 동시에 해야함!
스코프
블록단위 스코프를 가짐
{
const meet = hi
}
console.log(meet); //ReferenceError: meet is not defined
호이스팅 : 가능!
let
과 const
둘다 호이스팅이 되는데 안되는것처럼 보이는건 TDZ에 들어가서임
JS에서는 총 3단계에 걸쳐서 변수를 선언함
선언(Declaration): 스코프와 변수 객체가 생성, 스코프가 변수 객체를 참조.
초기화(Initialization): 변수 객체 값을 위한 공간을 메모리에 할당. 이 때 할당되는 값은 undefined다.
할당(Assignment): 변수 객체에 값을 할당한다.
let
과 const
둘다 선언은 되어 있으나 초기화가 이뤄지지않음.
실제로 값을 할당하는 부분에 가야 초기화와 할당이 일어남