JavaScript_ Scope

Daye Kang·2020년 2월 2일
0
  • scope: 프로그램의 다른 부분들에 접근가능하거나 가능하지 않은 어떤 변수들에 대한 범위, 설정
  • blocks: {}, curly brace로 감싸인 statements
  • global scope: 프로그램의 모든 부분에 접근 가능한 변수 영역
  • global variables: global scope안에 있는 변수들
  • block scope: 한 block안에 정의되어 오직 그 안에서만 접근 가능한 변수들의 영역
  • local variables: block scope안에 있는 변수들
  • global namespace: 전역으로 스코프된 정보를 담고 있는 코드의 공간
  • scope pollution: namespace 안에 너무 많은 변수들이 있거나 변수명이 재사용될 때 발생하는 코드 에러 문제
// 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로 변수를 선언해야 한다.

  • block 별로 변수를 선언하면 매우 가독성이 높아진다.
  • 코드 보수유지에도 훨씬 편리하다.
  • block 별로 변수가 불리기 때문에 코드의 메모리도 아낄 수 있다.
// 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
profile
뭐든 하자

0개의 댓글