Scope

Siwoo Pak·2021년 5월 28일
0

Javascript

목록 보기
12/34

1. 정의

  • 현재 실행되는 context
  • 여기서 context는 값과 표현식이 "표현"되거나 참조 될 수 있음을 의미.
  • 만약 변수 또는 다른 표현식이 '해당 스코프' 내에 있지 않다면 사용불가
  • 계층적 구조를 가지기 때문에 하위->상위 접근 가능 하나, 반대는 불가
function scopeFunc() {
  let x = 'area variable';
  console.log(x); // 'area variable' 출력
}
console.log(x); // VM10:5 Uncaught ReferenceError: x is not defined
  • 이 코드에서 보는 바와 같이 함수 블록 안에 선언된 변수 x는 외부에서 사용할수 없다. 함수가 실행되는 동안 메모리에서 그 변수 생성되고 함수 끝나면 메모리에서 사라지기 때문에 scope 밖에서 그 변수를 호출하는 경우 메모리의 없기에 존재하지 않으므로 변수가 선언되지 않았다는 참조 에러가 뜬다. 반대로 함수 외부에서 선언된 변수는 접근이 가능하다.
let x = '함수 밖에서 선언된 변수';

function scopeFunc() {
  console.log('여기는 함수블록 안입니다.');
  console.log(x); // 변수 x가 저장된 값 출력
}
console.log('여기는 함수 밖입니다.');
console.log(x); // 같은 scope 안에 있기에 x 사용 가능.
  • 이렇게 함수 밖의 선언된 변수는 사용가능하다. 아직 메모리 상에서 그 변수는
    저장되어있는 상태이기 때문에.

2. 종류

  • scope의 종류: block scope와 fuction scope
  • 함수(화살표 함수를 제외한) 외엔 다른 스코프는 블록스코프이다
profile
'하루를 참고 인내하면 열흘을 벌 수 있고 사흘을 참고 견디면 30일을, 30일을 견디면 3년을 벌 수 있다.'

0개의 댓글