자바스크립트에서 변수는 어떠한 범위 안에서만 사용 가능하다는 규칙을 갖고있는데, scope는 변수와 그 값이 어디까지 사용 가능한지를 판단하는 범위이다!
함수를 선언할 때 {}로 묶어주는 범위도 스코프라고 할 수 있는 예시이다!!
그래서 똑같은 이름으로 함수를 선언하면 충돌이 일어나서 에러가 뜨는 것이였다!!!
let의 큰 특징으로는 재할당가능 재선언불가능이 있다!!!!
그리고 scope의 유효범위는 Block Scope다.예시
let fruit = 'apple'; console.log(fruit); // 'apple' let fruit = 'banana'; console.log(fruit); // SyntaxError: Identifier 'fruit' has already been declared fruit = 'peach'; console.log(fruit); // 'peach'
const는 재할당 재선언 불가능이 가능하다!
그리고 scope의 유효범위는 let과 똑같이 Block Scope이다!!!예시
const fruit = 'apple'; console.log(fruit); // 'apple' const fruit = 'banana'; console.log(fruit); // SyntaxError: Identifier 'fruit' has already been declared fruit = 'peach'; // TypeError: Assignment to constant variable. console.log(fruit); // 'apple'
var는 재할당 재선언 모두 가능하고 scope의 유효범위는 let과 const랑은 다르게 Function Scope이다!
예시
var fruit = 'apple'; console.log(fruit); // 'apple' var fruit = 'banana'; console.log(fruit); // 'banana'