반응형
SMALL

전역객체 3

자바스크립트에서 var로 선언하면 자동으로 전역객체 window로 등록되니?

전역 스코프에서 var로 선언하면 window에 자동으로 window의 프로퍼티로 등록됩니다. 왜냐하면 var로 선언된 변수가 함수스코프 뿐만 아니라, 전역 스코프에서도 유효합니다. 하지만 함수스코프안에서 var로 선언 및 할당을 하면 위와는 다르게 window 전역객체에 할당되지 않습니다. 왜냐하면 var는 함수스코프를 제공하기 때문에 여기서의 var는 해당 함수 스코프에서만 유효합니다.

JavaScript 2023.03.09

자바스크립트에서 const로 리액트 컴포넌트를 만들었을 때, window 객체는 해당 컴포넌트별로 사용하는건가?

const 키워드로 만든 리액트 컴포넌트는 각 컴포넌트마다 독립적인 인스턴스가 생성되므로, 해당 컴포넌트의 내부에서 window 객체를 사용하더라도 전역 스코프의 window 객체와는 별개로 새로운 window 객체가 생성됩니다. 여기서 독립적인 인스턴스라는 것을 어떻게 아냐? 로 할당하면 새로운 인스턴스를 생성합니다. Object.is()를 통해서 a와 b의 인스턴스가 서로 다른 독립적인 인스턴스라는 것을 말해줍니다. import React from "react"; const Example1 = () => { var count = 0; function handleClick() { count++; console.log(`Count is now ${count}`); } return ( Count: {cou..

JavaScript 2023.03.09

자바스크립트의 window 전역객체와 호이스팅은 어떤 관계가 있는가?

JavaScript에서 전역 범위에서 선언한 변수나 함수는 전역 객체의 프로퍼티로 등록됩니다. 브라우저 환경에서는 전역 객체로 window 객체를 사용하고, Node.js 환경에서는 global 객체를 사용합니다. 리액트에서 쓴다면 window 객체겠네요. 이 때, JavaScript에서는 호이스팅(hoisting)이라는 메커니즘이 있습니다. 호이스팅은 변수나 함수를 선언하기 전에 사용할 수 있다는 것을 의미합니다. 즉, 변수 선언 혹은 함수 선언은 위치에 상관없이 자동적으로 스코프의 최상위로 끌어올려지는 것입니다. 하지만 전역객체 window는 브라우저 환경에서 전역객체로 사용되고, 전역 변수와 함수를 window 객체의 프로퍼티로 사용할 수 있습니다. 즉 전역 스코프에서 선언한 변수와 함수는 자동으로..

JavaScript 2023.03.09
반응형
LIST