// block scope
const logVisibleLightWaves = () => {
const lightWaves = 'Moonlight';
console.log(lightWaves); // Moonlight
// block 내에서만 lightWaves를 직접적으로 가져올 수 있음.
}
logVisibleLightWaves(); // Moonlight
console.log(lightWaves); //referenceError: lightWaves is not defined
전역변수를 선언하는 것은 지양해야 한다. 스코프 오염을 일으킬 수 있고 이는 곧 코드상의 에러를 일으킬 수 있다. 따라서 가장 좋은 것은 가능한 타이트하게 block scope로 변수를 선언해야 한다.
// good scoping
const logSkyColor = () => {
const dusk = true;
let color = 'blue';
if (dusk) {
let color = 'pink';
console.log(color); // pink
}
console.log(color); // blue
};
console.log(color); // ReferenceError