자바스크립트 호이스팅(Hosting)자바스크립트 호이스팅은 변수와 함수 선언이 스코프의 최상단으로 끌어올려진 것처럼 동작하는 현상을 말한다.코드를 실행하기 전에 자바스크립트 엔진이 해당 스코프(함수나 블록) 전체를 스캔하여 변수와 함수 선언을 먼저 처리하기때문에 이런 현상이 발생한다. 호이스팅은 마치 코드를 실제 작성한 위치와 상관없이 선언이 맨 위로 이동하는 것처럼 보인다. 변수 호이스팅varvar 키워드는 선언과 초기화가 동시에 호이스팅 된다. 이때 초기화란 값을 할당하는 작업이 아닌 메모리 공간을 확보하고 자동으로 undefined를 할당하는 과정이다.따라서 name 변수를 실제로 선언한 상단에서 호출했음에도 에러가 나지 않고 undefined를 출력한다.console.log(name); // u..
자바스크립트 스레드(Thread)자바스크립트에서 스레드란, 하나의 프로그램안에서 코드를 실행하는 흐름의 단위를 말한다. 일반적으로 자바스크립트는 싱글 스레드 언어이며, 이것은 자바스크립트 코드가 한번에 하나의 작업만 순차적으로 처리한다는 의미이다.싱글 스레드는 시간이 오래 걸리는 작업이 발생하게되면 그 작업이 끝날때까지 다른 작업을 모두 멈춰버리는 블로킹 현상이 발생할 수 있는데, 현대의 자바스크립트 환경(브라우저, Node.js)은 이러한 한계를 극복하기 위해 비동기처리 혹은 웹 워커 등의 보조 기술을 통해 효율적으로 처리할 수 있다. 비동기 처리는 setTimeout, fetch, Promise와 같은 비동기 API를 사용하게 하며, 이들은 백그라운드에서 작업을 처리하고 작업이 끝나면 콜백 함수를 실..
자바스크립트 비동기(promise, async/await) 코드의 내부 동작Promise와 async/await은 비동기 작업을 다루는 문법이며, 두 문법의 동작에는 차이가 없으며 단순히 Promise의 복잡한 문법을 async/await이 더 직관적으로 작성하게 해주는 가독성의 차이이다.따라서 async/await을 '문법적 설탕'이라고 부른다. Promisefunction fetchUserDataWithPromises() { fetch('https://api.example.com/user/123') .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } ..
자바스크립트 힙 (Heap)자바스크립트에서 동적 메모리 할당이 필요한 값들이 저장되는 메모리 영역으로 객체, 배열, 함수등이 여기에 저장된다.즉, 개발자가 직접 만들거나 생성한 데이터들이 저장되는 큰 저장 공간이다.크기가 커질 수 있고, 위치가 정해져 있지 않다. 느리지만 유연한 점이 특징이다. 스택(Stack)과 힙(Heap)구분StackHeap위치고정적, 작음동적, 큼용도함수 호출, 지역 변수객체, 배열, 함수 등 참조값속도빠름느림관리컴파일러가 자동 관리JS 엔진(GC)이 자동 관리 (Garbage Collection) function test() { const a = 1; // 스택 (고정 크기, 기본 타입) const b = { value: 2 }; ..