자바스크립트
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) 변수/상수 *변수나 상수는 가능한 사용할 블록 내에서 선언하는 것이 좋다. 메모리가 절약되기 때문이다.
- 스택 영역에 위치
- 해당 블록 안에서만 접근 가능
- 블록 실행 종료시 소멸