반응형
먼저 var 에 대해 알아볼건데 스코프 즉 범위의 차이로 알아 볼 수 있다.
function outer(){
function inner(){
var score=0;
}
inner();
console.log(score); // 에러 내부에서 외부
}
outer();
function outer(){
var score=0;
function inner(){
console.log(score) // 접근 가능 외부에서 내부
}
inner();
console.log(score);
}
outer();
하지만 만약 if 문으로 var를 선언했을 때는
function outer(){
if(true){
var score=0; // outer 함수 내 어디서든 사용 가능
}
console.log(score);
}
outer();
var는 함수 단위의 스코프를 가지기 때문.
이제 let키워드를 알아볼 건데 함수 단위가 아닌 블록 단위의 스코프를 가지고있다.
function outer(){
if(true){
let score =0; // number 타입으로 지정
score = 20; // 같은 number타입
score = "20"; // 문자열로서 에러 발생
};
console.log(score); // if 블록 내부에서만 score 범위 유효
}
outer();
한 번 값을 할당하고 변수를 선언할 경우 그 변수 타입이 지정이 된다.
function outer(){
if(true){
let score; // 값을 정해주지 않고 아무런 타입이 와도 상관이 없게 선언만
score = 20; // 에러 발생 X
score = "20"; // 에러 발생 X
};
console.log(score); // if 블록 내부에서만 score 범위 유효
}
outer();
마지막으로 const 는 상수, 한 번 할당이 되면 바꿀 수 없다.
const score = 100; // 타입만 선언 할 것이 아니라 값도 무조건 적어줘야 한다
score = 30; // 이미 100으로 지정해줬기 때문에 에러 발생
반응형