13 - 스코프

2022. 9. 2.·🎨 프론트엔드 공부/JS & TS

모던 자바스크립트 Deep Dive 정리

스코프란?

▶식별자가 유효한 범위

▷예시) 식별자인 파일이름을 중복해서 사용할 수 있는 이유는, 폴더(디렉터리) 덕분

 

전역 스코프

▶코드의 가장 바깥 영역

▷전역 변수는 어디서든지 참조할 수 있다

 

지역 스코프

▶함수 몸체 내부

▷중첩이 가능

 

스코프 체인

▶모든 스코프는 hierarchy를 가지며, 모든 지역 스코프의 최상위 스코프는 전역 스코프이다

▶변수를 참조할때 자바스크립트 엔진은 스코프 체인을 통해 변수를 참조하는 코드의 스코프에서 시작하여

상위 스코프 방향으로 이동하며 선언된 변수를 검색한다

 

함수레벨 스코프 vs 블록레벨 스코프

▶함수레벨 스코프

▷var

▷오직 함수 몸체만을 스코프로 인정하며 if, for 등의 코드 블록을 무시

 

▶블록레벨 스코프

▷let, const

▷모든 코드블록이 지역 스코프를 만듬

 

▷함수레벨 스코프 예시

 

var var1 = 1; // 코드의 가장 바깥 영역에서 선언한 변수

if (true) {
  var var2 = 2; // 코드 블록 내에서 선언한 변수
  if (true) {
    var var3 = 3; // 중첩된 코드 블록 내에서 선언한 변수
  }
}

function foo() {
  var var4 = 4; // 함수 내에서 선언한 변수

  function bar() {
    var var5 = 5; // 중첩된 함수 내에서 선언한 변수
  }
}

console.log(var1); // 1
console.log(var2); // 2
console.log(var3); // 3
console.log(var4); // ReferenceError: var4 is not defined
console.log(var5); // ReferenceError: var5 is not defined

 

렉시컬 스코프

▶함수를 어디서 정의했는지에 따라 함수의 상위 스코프를 결정한다

▷예시

 

var x = 1;

function foo() {
  var x = 10;
  bar();
}

function bar() {
  console.log(x);
}

foo(); // 1
bar(); // 1

 

▷var 대신 let, const 를 써도 동일한 결과를 발생시킴

▷var x = 10 은 무시된다

'🎨 프론트엔드 공부/JS & TS' 카테고리의 다른 글
  • 15 - let, const 키워드와 블록 레벨 스코프
  • 14 - 전역 변수의 문제점
  • 12 - 함수
  • 11 - 원시 값과 객체의 비교
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (510)
      • 🎨 프론트엔드 공부 (247)
        • JS & TS (86)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
13 - 스코프
상단으로

티스토리툴바