Frontend/Javascript 3

[Javascript] 클로저를 이용해 React.useState 따라하기

목차클로저 개념 알아보기클로저를 이용해 useState 구현해보기1.  클로저 개념 알아보기클로저의 개념을 알기 위해선 먼저 렉시컬 환경에 대해 알아야 합니다. 자바스크립트의 모든 실행 컨텍스트(함수, 코드 블록, 전역 등)는 렉시컬 환경이라는 객체를 갖습니다. 렉시컬 환경은 크게 환경 레코드와 외부 렉시컬 환경에 대한 참조으로 구성됩니다.환경 레코드: 해당 실행 컨텍스트의 지역 변수를 프로퍼티로 저장하고 있는 객체. `this` 같은 기타 정보도 여기에 저장됨.외부 렉시컬 환경에 대한 참조: 말 그대로 외부 렉시컬 환경에 대한 참조. 이를 이용해 외부 실행 컨텍스트의 변수에 접근할 수 있음.// globallet name;name = "뽀또";/*** 전역_렉시컬_환경: {* 환경_레코드: {* ..

Frontend/Javascript 2024.09.12

[Javascript] 호이스팅에 대해 설명해주세요.

호이스팅이란?호이스팅이란 변수와 함수의 선언문이 해당 스코프의 최상단으로 끌어올려진 것처럼 동작하는 현상을 말합니다. 이 현상으로 인해 변수와 함수가 초기화되기 전에 접근하는 것이 가능해집니다. 다만, ES6에 등장한 let과 const는 호이스팅은 되지만, 초기화 전에 접근하는 것은 불가능합니다. 이는 개발자가 초기화 전에 변수에 접근하는 것을 방지하기 하여 코드의 예측 가능성을 높이기 위해 TDZ라는 개념을 도입했기 때문입니다. var, let, const의 호이스팅var, let, const 모두 자바스크립트에서 변수를 선언하는 키워드입니다. 세 키워드 모두 해당 스코프의 최상단으로 호이스팅 되지만, 호이스팅 되지만 초기화 시점이 다릅니다. var 변수는 호이스팅 되면 자바스크립트 엔진에 등록됨과 ..

Frontend/Javascript 2024.08.28

[Javascript] 재귀와 스택

두 가지 사고방식반복적인 사고를 통한 방법: for 루프재귀적인 사고를 통한 방법: 작업을 단순화하고 자기 자신을 호출함재귀 깊이재귀 깊이(recursion depth): 가장 처음 하는 호출을 포함한 중첩 호출의 최대 개수자바스크립트 엔진은 최대 재귀 깊이를 제한한다!만개 정도까진 허용, 대다수의 엔진이 십만까지는 다루지 못 함실행 컨텍스트와 스택실행 중인 함수의 실행 절차에 대한 정보는 해당 함수의 _실행 컨텍스트_에 저장된다.함수 1회 당 정확히 하나의 실행 컨텍스트가 생성함수 내부에 중첩 호출이 있을 때는 아래와 같은 절차가 수행된다.현재 함수의 실행이 일시 중지된다.중지된 함수와 연관된 실행 컨텍스트는 _실행 컨텍스트 스택(execution context stack)_이라는 자료구조에 저장된다...

Frontend/Javascript 2024.08.12