스코프 체인
스코프를 통해서 어떤 함수에서 어떤 변수를 접근 할 수 있음
const 변수는 블록 스코프를 가짐
const x = 'x'; //없애면 c에서 x를 출력하면 reference error 발생
function c() {
const y= 'y';
console.log('c ', x)
}
function a() {
const x = 'xxx'
console.log('a ', x)
function b() {
const z = 'z';
console.log('b ', x);
c();
}
b();
}
a();
c();
함수 a,c는 전역 스코프
b는 c의 호출 스택 스코프
호이스팅
호이스팅가 발생할 상황 자체를 안만들어야함
아래는 a() 호출 시, b가 undefined된 스코프를 a 메소드가 가지고 있어 ReferenceError가 발생
이런 호이스팅을 방지해야 좋은 코드!
const x = 'x'; //없애면 c에서 x를 출력하면 reference error 발생
function c() {
const y= 'y';
console.log('c ', x)
function b() {
const z = 'z';
console.log('b ', x);
c();
}
}
function a() {
const x = 'xxx'
console.log('a ', x)
b();
console.log(x);
}
a();
c();
'자바스크립트' 카테고리의 다른 글
[인간 JS엔진 되기] 2-2. 프로미스의 최고의 장점 (0) | 2023.12.21 |
---|---|
[인간 JS엔진 되기] 2-1. 비동기 - 콜백, promise, async/await (1) | 2023.12.20 |
[인간 JS엔진 되기] 1-3. 호출 스택 분석 (0) | 2023.12.19 |
[인간 JS엔진 되기] 1-1. 함수와 함수의 호출 (1) | 2023.12.19 |
함수 호출 방식에 의해 결정되는 this (0) | 2023.09.05 |