-
Section 3. 자바스크립트 블록문과 스코프자바스크립트 2023. 3. 23. 16:56
블록문이란?
{ console.log('블록문'); }
- 0개 이상의 statement들을 묶은 단위다.
- 제어문, 함수 등에 사용된다.
- 새로운 스코프를 생성한다.
그렇다면 스코프란? scope?
범위를 말한다. 일반적으로 변수를 어느 범위까지 쓸 수 있는가? 에대한 범위라고 생각하면 편하다.
{ //블록안에 선언된 변수와 상수를 밖에서 사용 불가 const x = 'Hello'; let y = 'world!'; console.log(x, y); } console.log(x); //애러 console.log(y); //애러 let x = 1; {//블록 안쪽에서는 바깥의 것 사용 가능 let y = 2; console.log(x, y); } console.log(x); console.log(y); //애러
추가로 블록 안쪽에 변수나 상수가 새로 선언되면 바깥 것을 덮어쓴다는점을 꼭 기억하자.
스코프체인이란? scope chain
어떤것이 들어와서 쌓이는걸 스택 stack 이라 한다.
let a = 0; let b = 1; let c = 2; console.log('시점 1:', a, b, c); //0 1 2 { let a = 'A'; let b = 'B' console.log('시점 2:', a, b, c); //A B 2 { let a = '가' console.log('시점 3:', a, b, c);// 가 B 2 } console.log('시점 4:', a, b, c);// A B 2 } console.log('시점 5:', a, b, c); // 0 1 2
블럭 안에 해당 변수/상수가 없으면 바깥쪽으로 찾아 나가는 것을 볼 수 있다. 이것을 체이닝 이라 하고 후입선출 즉, 나중에 온 것이 먼저 나가는 특성을 가지고 있다.
마지막으로 메모리에서의 관점에서 살펴보자.
전역(global) 변수/ 상수 *전역변수 사용은 최소화하는 것이 좋다. 영향을 미치는 범위가 매우 넓기 때문이다.
- 데이터 영역에 위치
- 코드 어느 곳에서듣 접근 가능
- 프로그램 종료시 소멸
지역(local) 변수/상수 *변수나 상수는 가능한 사용할 블록 내에서 선언하는 것이 좋다. 메모리가 절약되기 때문이다.
- 스택 영역에 위치
- 해당 블록 안에서만 접근 가능
- 블록 실행 종료시 소멸
'자바스크립트' 카테고리의 다른 글
Section 3. 자바스크립트 switch (0) 2023.03.23 Section 3. 자바스크립트 if/else (0) 2023.03.23 자바스크립트 원시 타입과 참조 타입 (0) 2023.03.23 자바스크립트 객체와 배열 미리보기 (0) 2023.03.23 Section 2. 자바스크립트 연산자 마무리 (0) 2023.03.23