전체 글(106)
-
[Revisit JS] 클로저 이해해보기
상위 스코프를 [[environment]]에 상위 스코프의 참조를 저장한다. 외부 함수보다 중첩 함수가 더 오래 유지되눈 경우 중첩 함수는 이미 생명 주기가 종료한 외부 함수의 변수를 참조할 수 있다. 이러한 중첩 함수를 클로저라고 부른다. 클로저는 중첩 함수가 상위 스코프의 식별자를 참조하고 있고 중첩 함수가 외부 함수보다 더 오래 유지되는 경우에 한정하는 것이 일반적이다. 상위 스코프에 2개 이상의 변수 예를 들어, x, y가 있으면 모던 브라우저는 최적화를 통해 참조하고 있는 변수만 기억한다. 참조된 변수를 자유 변수라고 부른다. 클로저란 함수가 자유 변수에 대해 닫혀있다라는 의미다. 이를 좀 더 알기 쉽게 의역하자면 "자유 변수에 묶여있는 함수"라고 할 수 있다. 클로저는 자바스크립트의 강력한 기..
2023.09.06 -
[Revisit JS] 자바스크립트 엔진은 어떻게 인터프리터의 단점을 해결했는가?
가장 쉽게는 이렇게 답을 얻었다. 원초에 질문은 사실 이 것은 아니었다. 1. 컴파일러 언어와 인터프리터 언어의 차이가 뭘까? 차이는 기본적으로 언어를 해석하는 프로세스가 다르다는 점이다. 컴파일 언어는 컴파일하는 과정을 거쳐 코드를 실행한다. 컴파일이란 아래와 같다. 단순하게 우리의 소스 코드를 컴퓨터가 읽을 수 있는 코드로 변환하는 것을 컴파일이라고한다. 인터프리터 언어의 경우 컴파일처럼 기계어로 번역하는 과정을 따로 갖지 않고 한 줄씩 읽어가면서 번역하고 실행을 시킨다. 여기서 단점은 매번 실행시 번역을 하다보니 코드 실행 속도가 느릴 수 밖에 없다. 컴파일의 경우 컴파일 과정을 거치고 실행 파일이 생성되어 다음 실행 시 빠르게 동작할 수 있다. 코드를 수정하면 그 부분만 재컴파일하기 때문에 별 문..
2023.09.05 -
파이어 스토어에서 스냅샷 도대체 무엇인가?
파이어 베이스를 처음 배우면서 스냅샷이라는 단어를 알게 되었다. 파이어 스토어에서 데이터를 부르면 바로 원본 데이터를 가져오는 것이 아니라 스냅샷을 가져온다. 잠시 찾아본 내용으로는 정확히 정의 내릴 수는 없지만 A snapshot can be defined as a system state at a specific point of time in a computer system. 위키의 정의처럼 한 특정 시점을 찍어서 가져온 것이라고 한다. 그렇다고 복사본은 아니고 사용하려면 data화를 시켜야한다. export const findPlantDataByDocId = async (docId: string) => { try { if (!docId) { errorNoti('식물 id가 잘못되었습니다.'); ret..
2023.09.05 -
파이어베이스 update 메서드 타입 에러 2023.09.05
-
18. 부트캠프 종료, 나는 성장했는가?
오늘 부트캠프가 끝났다. 5월 초에 시작했는데 벌서 9월이라니 여름이 어떻게 지나갔는지 모르겠다. 한창 날이 뜨거웠는데 2차 프로젝트 막바지에는 바람 속에 찬기 도는 것을 느낄 수 있었다. 이런 시간 속에서 내가 성장했냐고 묻는다면 그렇다고 할 것이다. 근데, 생각만큼 성장했냐고 묻는다면 아니라고 대답할 것 같다. 부트캠프가 끝난 후 카페에서 이 글을 쓰는 이유는 후자의 대답 때문이다. 사실 프로젝트가 끝나서 속 시원하다는 느낌보다는 아쉽고 답답하고 나의 실력이 아직 형편없다고 느껴 마음이 좋지 못하다. 그런데 어디 말할 곳도 없어서 이렇게 당일에 카페로 나와 글을 남긴다. 사실 몹시 슬프다. 영화의 슬픈 장면을 볼 때의 슬픔이 아니라 그냥 침울하다. 그런 슬픔이다. 어제 숨 가쁘게 프로젝트를 마무리하고..
2023.09.04 -
렌더링 후 undefined가 먼저 들어가서 수정 데이터 초기값을 못잡는 경우 2023.08.27