2021-09-15 노션페이지
기록된 노션을 다시 정리
기억할 것 : 선언된 곳이 기준!!
Scope란
참조 대상 식별자(identifier, 변수, 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름)를 찾아내기 위한 규칙이다.
전역스코프
전역에 변수를 선언하면 이 변수는 어디서든지 참조할 수 있는 전역 스코프를 갖는 전역 변수가 된다. var 키워드로 선언한 전역 변수는 전역 객체(Global Object) window의 프로퍼티이다.
지역 스코프의 특징
- 블록 레벨 스코프(block-level scope): {} 코드블럭에서만 유효
const
,let
- 함수 레벨 스코프(function-level scope) : 함수에서만 유효
-var
// 해당 if문이 전역에서 사용됐을 경우 전역 변수가 된다. // var을 함수로만 감싸줬을 때 유효하다. if (true) { var x = 5; } console.log(x);
함수 내에 존재하는 함수인 내부 함수 (스코프 체인)
- (중첩 스코프는 가장 인접한 지역을 우선하여 참조한다.)
var x = 'global'; function foo() { var x = 'local'; console.log(x); // local function bar() { // 내부함수 console.log(x); // local } bar(); } foo(); console.log(x); //global
렉시컬스코프
- 렉시컬 스코프는 함수를 어디서 호출하는지가 아니라 어디에 선언하였는지에 따라 결정된다.
=> 반대의 경우 this가 있다.
참조: poiemaweb.com