Scope은 변수에 접근하거나 참조할 수 있는 위치를 정의하는 중요한 요소임.
var는 scope에 영향을 받지 않기 때문에 전역변수로 선언하든, 지역변수로 선언하든 어디서나 접근 가능.
반면 let, const는 scope에 영향을 받기 때문에 해당 코드 블럭 밖에서 접근할 수 없음
코드 블록 외부에서도 액세스 가능
const color = 'blue';
const returnSkyColor = () => {
return color; // blue
};
console.log(returnSkyColor()); // blue
색상변수가 블록 외부에서 정의되어도 함수블록에서 접근가능함
코드 블록 내에서만 액세스 가능
const logSkyColor = () => {
let color = 'blue';
console.log(color); // blue
};
logSkyColor(); // blue
console.log(color); // ReferenceError
함수 내에서의 색상변수는 중괄호 내에서만 사용 가능
함수 외부에 동일한 변수를 입력하면, 에러 발생
너무 많은 전역변수가 존재할 시 문제가 발생할 수 있음.
이를 방지하기 위해
let num = 50;
const logNum = () => {
num = 100; // Take note of this line of code
console.log(num);
};
logNum(); // Prints 100
console.log(num); // Prints 100
logNum() 함수 내 변수 키워드를 빼먹었을 시, let num 이 100으로 재설정 됨