[JS인터뷰준비] Scope

Bonggus·2021년 10월 30일
0

자바스크립트

목록 보기
19/23
post-thumbnail

1. Scope

유효범위. 변수의 접근성과 생존시간을 제어에 대한 개념이다. 전역에서는 함수 스코프 안으로 접근할 수 없다.

func1 = function() {
  var a = 1;
  var b = 2;
  return a + b;
}

var a =20;


console.log(func1()); // 3
console.log(b); // error;

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

2. 자바스크립트 유효범위

자바스크립트의 스코프는 전역, 함수, 블록스코프 3가지가 있다.

2.1 전역스코프

스크립트 어디에서든 접근이 가능하기때문에 사용이 쉽다. 그러나 타인과 협업, 라이브러리 사용시 충돌할 가능성이 있다. 전역에 사용하면 변수나 함수명이 겹칠 가능성이 있다. 그러면 의도치 않은 결과가 나올 수 있다.

2.2 함수스코프

함수 내부에서 정의된 변수와 매개변수는 함수 외부에서 접근할 수 없다. 함수 내부에서 정의된 변수라면 함수의 어느부분에서도 접근이 가능하다.

var func = function() {
  var a = 1;
  var b = 2;
  
  var func2 = function() {
  	var b = 5;
    var c = 6;
    a = a + b + c;
    console.log(a) // 12
  }
  func2();
  console.log(a) // 12
}

func();

func2 안에서 a를 선언하지 않았지만, 부모스코프에 선언되어있기 때문에 a에 접근이 가능하다.

2.3 블록스코프

중괄호 안에서만 접근이 가능하다. 블록 내부에 정의된 변수는 블록의 실행이 끝나면 해제된다. let, const는 블록스코프이다.

if (true) {
  var value = 'hello'
} 
console.log(value); // hello
if (true) {
  let value = 'hello' // let은 블록 스코프 내에서만 존재한다.
} 
console.log(value); // error

정리

  • 스코프는 변수의 접근성과 생존 기간을 제어한다.
  • 스코프는 이름이 충돌하는 문제를 덜어주고, 자동으로 메모리를 관리한다.
  • 자바스크립트에는 전역스코프, 함수스코프, 블록스코프가 존재한다.

출처

profile
프론트엔드

0개의 댓글