'암묵적 전역'

이동규 (Justin)·2020년 8월 2일
2
post-thumbnail

var x = 10;

function foo(){
  y = 20;
  console.log(x+y);
}

foo(); // 30

y는 전역에 선언되지 않았음에도 참조되어 foo는 30을 출력한다.

선언하지 않은 식별자에 값을 할당하면 전역객체의 '프로퍼티' 가 된다.

이는 변수가 아니다. window.y = 20 처럼 해석되어, 전역객체의 프로퍼티가 되는 것이다.

이러한 현상을 implicit global, 암묵적 전역 이라 한다.

y는 변수가 아니므로 호이스팅이 발생하지 않는다!


// 전역 변수 x는 호이스팅이 발생한다.
console.log(x); // undefined
// 전역 변수가 아니라 단지 전역 프로퍼티인 y는 호이스팅이 발생하지 않는다.
console.log(y); // ReferenceError: y is not defined

var x = 10; // 전역 변수

function foo () {
  // 선언하지 않은 변수
  y = 20;
  console.log(x + y);
}

foo(); // 30
profile
Frontend Developer, JamStack, Ethereum

0개의 댓글