목록자바스크립트 (29)
시작하는 중

JS는 그 자체는 싱글 스레드 언어이다. 흔히들 검색하면 나오는 그런 그림을 생각하지 않고 JS 엔진 그 자체만 본다면 JS에는 stack과 heap 메모리만 존재한다. 힙은 객체가 할당되는 영역이니까 이벤트 루프와 런타임에선 생각하지 않아도 되어 제외한다면, 스택 하나만 남는다. 스택은 후입선출의 구조를 지녔으며 스택에 쌓이는 것은 호출되는 함수이다. 함수가 실행될 수 영역은 스택 하나이니까 싱글스레드 언어라고 하는 것이다. function funcA() { console.log("2 step"); funcB(); console.log("4 step"); }; function funcB() { console.log("3 step"); }; console.log("1 step"); funcA(); 이 코..
for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array. 왜 화낼까? 에러 메시지를 읽어보면... for..in 루프는 전체 프로토타입 체인을 반복하는데 이건 너가 원하는 것이 아닐 것이다. Object.{keys,values,entries}를 사용하고 배열을 반복하라. 즉 for .. in을 쓰면 프로토타입까지 반복한다는 것이다. const arr = [1, 2, 3, 4, 5]; let result = ""; for (const element in arr) { r..
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise Promise - JavaScript | MDN Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다. developer.mozilla.org Promise 이름 뜻대로 약속이다. 어떤 약속이냐하면 Promise가 생성될 때, 인자로 들어가는 excutor 함수가 어떤 결과가 나올 때 결과를 제공한다는 약속인 것이다. 즉, 생성된 시점에는 알려지지 "않았을 수도" 있는 값을 위한 대리 처리자인 것이다. Promise의 executor함수는 micro task로 대기열에 저장된다. micro task는 간단히 말하자..
js의 모든 글은 모든 정보는 mdn의 공식문서에 기반한다. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise Promise - JavaScript | MDN Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다. developer.mozilla.org promise에 들어가기 전에 용어정리를 할 필요가 있다. 위의 글을 읽다보면 state, fate, fulfilled, rejected, resolved, pending 등이 있다. 영어로 된 글이어서 구글 번역에 의존하다 보니 헷갈리기도 하고 같이, 자주 등장하기 때문에 한번 나만의 언어로 정리하고자 한다. h..