[TIL] scope

정세비·2021년 5월 13일
0

JavaScript

목록 보기
3/16
post-thumbnail

Scope은 변수에 접근하거나 참조할 수 있는 위치를 정의하는 중요한 요소임.

var는 scope에 영향을 받지 않기 때문에 전역변수로 선언하든, 지역변수로 선언하든 어디서나 접근 가능.
반면 let, const는 scope에 영향을 받기 때문에 해당 코드 블럭 밖에서 접근할 수 없음

1. Global Scope (전역변수)

코드 블록 외부에서도 액세스 가능

const color = 'blue';
 
const returnSkyColor = () => {
  return color; // blue 
};
 
console.log(returnSkyColor()); // blue

색상변수가 블록 외부에서 정의되어도 함수블록에서 접근가능함

2. Block Scope (지역변수)

코드 블록 내에서만 액세스 가능

const logSkyColor = () => {
  let color = 'blue'; 
  console.log(color); // blue 
};
 
logSkyColor(); // blue 
console.log(color); // ReferenceError

함수 내에서의 색상변수는 중괄호 내에서만 사용 가능
함수 외부에 동일한 변수를 입력하면, 에러 발생

3. Scope Pollution

너무 많은 전역변수가 존재할 시 문제가 발생할 수 있음.

이를 방지하기 위해

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으로 재설정 됨

profile
파주

0개의 댓글