스코프(Scope)

설정·2021년 4월 1일
0

스코프(Scope)

코드의 접근 범위를 결정하는 것으로, 변수 접근 규칙에 따른 변수에 접근 가능한 유효범위를 말한다.

스코프 종류

1. 전역스코프(Global)

변수가 전역에 선언되어 있어 어느 곳에서든 접근이 가능하고, 전역에 선언된 변수를 전역변수라고 한다.

var a = 1; // 전역스코프, 전역변수

function numberPrint() { // 지역스코프
  return a;
};

console.log(numberPrint()); // 1

2. 지역스코프(Local)

해당 지역내에서만 접근 할 수 있으며, 지역에 선언된 변수를 지역변수라고 한다.

var a = 1; // 전역스코프
function numberPrint() { // 지역스코프(함수스코프)
  var a = 2; // 지역변수
  return a;
};

console.log(numberPrint()); // 2
}
  • 변수 a가 전역과 지역에 있지만, 가장 가까이 정의되어 있는 변수부터 따른다.
  • 하위스코프 내에서 찾을 수 없다면 Scope chain으로 한단계 위인 상위스코프에서 찾는다.
    즉, 스코프는 하위스코프에서 상위스코프로 접근이 허용된다.

2-1. 함수스코프(Function-scoped)

접근 유효범위가 함수(Function) 단위이다.

let p=1;
function print() {
  p=3;
  console.log('내부:', p);
}

print(); // 3
console.log('외부: ', p); // 1

만약 지역스코프의 p=3을 지운다면, Scope chain이 발생하여 해당 변수를 찾는다.

2-2. 블록스코프(Block-scoped)

접근 유효범위가 브라켓{} 단위이다.

{
  const a=1;
  console.log(a); // 1
}
console.log(a); // ReferenceEroor: a is not defined
  • let 혹은 const는 레퍼런스에러가 발생하나, var는 호이스팅이 가능하여 에러가 발생하지 않는다.
{
  var a=1;
  console.log(a); // 1
}
console.log(a); // 1

0개의 댓글