반응형
SMALL
JavaScript에서 전역 범위에서 선언한 변수나 함수는 전역 객체의 프로퍼티로 등록됩니다.
브라우저 환경에서는 전역 객체로 window 객체를 사용하고,
Node.js 환경에서는 global 객체를 사용합니다.
리액트에서 쓴다면 window 객체겠네요.
이 때, JavaScript에서는 호이스팅(hoisting)이라는 메커니즘이 있습니다.
호이스팅은 변수나 함수를 선언하기 전에 사용할 수 있다는 것을 의미합니다.
즉, 변수 선언 혹은 함수 선언은 위치에 상관없이
자동적으로 스코프의 최상위로 끌어올려지는 것입니다.
하지만 전역객체 window는 브라우저 환경에서 전역객체로 사용되고,
전역 변수와 함수를 window 객체의 프로퍼티로 사용할 수 있습니다.
즉 전역 스코프에서 선언한 변수와 함수는 자동으로 window 객체의 프로퍼티로 등록됩니다.
일단 결론만 말하면 전역객체 window와 호이스팅은 "직접적인" 관계는 없습니다.
호이스팅은 스코프와 관련이 있습니다.
변수와 함수가 선언된 스코프에 따라 호이스팅이 발생합니다.
따라서 전역 스코프에서 선언된 변수와 함수도 호이스팅이 발생합니다.
하지만 이건 호이스팅과 다른 개념입니다.
- 호이스팅: 스코프와 관련된 개념
- 전역객체 window: 브라우저 환경에서 전역객체로 사용되는 개념
console.log(myVariable); // undefined
myFunction(); // "Hello, world!"
var myVariable = 42;
function myFunction() {
console.log("Hello, world!");
}
반응형
LIST
'JavaScript' 카테고리의 다른 글
자바스크립트에서 let, const로 선언한 변수들이 window 객체에 없는 이유? (0) | 2023.03.09 |
---|---|
브라우저의 Re-Layout, Re-Paint 중 뭐가 더 안좋을까? (0) | 2023.03.09 |
모던자바스크립트 - 6(데이터 타입), 7(연산자), 8(제어문) (0) | 2023.03.07 |
모던 자바스크립트 5 - 표현식과 문 (0) | 2023.02.25 |
모던 자바스크립트 4 - 변수 (0) | 2023.02.20 |