스코프(Scope)

Verba volant, scripta manent·2022년 1월 5일
0

JS면접뽀시기

목록 보기
10/10

스코프(Scope)란?

변수의 접근성과 생존 기간을 제어하는 유효범위

스코프의 역할

이름이 충돌하는 문제를 덜어주고 자동으로 메모리를 관리한다.

스코프의 종류와 특징

1. 전역 스코프(Global Scope)

var val = 'hello';

function test () {
  var val = 'world';
  console.log(val);
}

test(); // 'world'(test함수 내에서만 참조 가능)
console.log(val); // 'hello'(전역에 선언되었기 때문에 어디서든 참조 가능)
  1. 스크립트의 어디서든 접근이 가능하기 때문에 사용이 쉽다.
  2. 타인과의 협업, 라이브러리 사용시 충돌의 가능성이 있다.

2. 함수 스코프(Function-level Scope)

function test() {
  val = "hello";
  var val2 = "world";
}

test()

console.log(val2) // ReferenceError: val2 is not defined(test 함수 내에서만 유효함)
console.log(val) // "hello"(선언되지 않은 변수이기 때문)
  1. 지역 스코프(Local Scope)라고도 한다.
  2. 함수 내부에서 정의된 변수와 매개변수는 함수 외부에서 접근 불가
  3. 함수 내부에서 정의된 변수라면 함수의 어느부분에서도 접근 가능

3. 블록 스코프(Block Scope)

if(true) {
  var value = "hello";
}

console.log(value); // "hello"

if(true) {
  let value = "world";
}

console.log(value); // "hello"(let 키워드를 사용했기 때문에 중괄호 안에서만 존재하는 변수임)
  1. ES6에서 도입되었다.
  2. 중괄호 안에서만 접근 가능
  3. 블록 내부에 정의된 변수는 블록의 실행이 끝나면 해제된다.

결론

  1. 스코프는 변수의 접근성과 생존 기간을 제어한다.
  2. 이름이 충돌하는 문제를 덜어주고, 자동으로 메모리를 관리한다.
  3. 종류 : 전역 스코프, 함수 스코프, 블록 스코프
profile
말은 사라지지만 기록은 남는다

0개의 댓글