본문 바로가기

javascript/pure

(5)
[자바스크립트] setTimeout이 정확한 시간을 보장하지 않는 이유 setTimeout() - Web API | MDN 전역 setTimeout() 메서드는 만료된 후 함수나 지정한 코드 조각을 실행하는 타이머를 설정합니다. developer.mozilla.org 자바스크립트는 특정 시간 이후, 또는 시간 간격으로 작업을 진행할 수 있도록 setTimeout, setInterval과 같은 함수를 대부분의 환경에서 지원한다. 이러한 함수들은 지연 시간 및 콜백을 입력받으며, 지연 시간 이후 콜백을 실행하는 동작 방식을 가지고 있다. 이때 콜백 함수는 정확히 지연 시간 이후에 실행되는 것이 아니라, 최소 지연시간을 대기한 후 실행되는 특성을 가지고 있다. 그렇다면 자바스크립트는 왜 정확한 지연 기능을 제공하지 않을까? const start = Date.now(); conso..
[자바스크립트] RegExp - 자바스크립트와 정규표현식 다양한 종류의 정보들은 저마다의 특정한 규칙을 가지는 경우가 많다. 예를 들어 전화번호라는 정보는 010 으로 시작하여 3자리 혹은 4자리 숫자가 2번 반복된다는 규칙을 가진다. 따라서 우리는 010-XXXX-XXXX 라는 문장을 보면, 앞서 언급한 규칙에 기반하여 이 문장을 전화번호로 판단할 수 있다. 즉, 우리는 전화번호의 패턴에 기반하여 특정 문장이 전화번호인지 여부를 알 수 있는 것이다. 특정 정보들이 공통적으로 가지고 있는 고유한 패턴을 이용하면 주어진 데이터에서 해당 정보들을 식별할 수 있는데, 이때 사용되는 고유한 패턴을 정규표현식이라고 한다. 정규표현식은 특정 정보의 문자열을 일정한 패턴으로 표현하는 형식 언어로, 많은 프로그래밍 언어에서 regex 등의 이름으로 해당 기능을 지원하고 있다..
[자바스크립트] Promise.all / allSettled 자바스크립트의 프로미스는 비동기 작업을 수행하는데 사용된다. 이때 다수의 프로미스 작업들에 대한 이행 여부를 검사하기 위해 다양한 메서드가 Promise 객체 내부에 존재한다. 그중 모든 프로미스의 이행을 대기하고 그에 대한 결과를 반환하는 유사 메서드 all 과 allSettled 가 존재한다. Promise.all const result_array = Promise.all([array of Promise object]); Promise.all은 다수의 프로미스 객체들을 배열 형태로 입력받아 해당 프로미스 객체들의 수행 결과를 배열 형태로 반환한다. 이때 하나의 프로미스 객체만 거절(reject) 상태가 되더라도 전체가 거절된다는 특징이 있다. 하나만 실패하더라도 의미가 없는 경우 사용할 수 있다. P..
[자바스크립트] [native code]의 의미 타입스크립트 환경에서 useImperativeHandle을 이용하여 ref을 이용하던 도중, 코드가 제대로 동작하지 않는 상황이 발생했다. 혹시 해당 함수가 존재하지 않는 것인가 하는 의문이 들어 이를 console.log을 이용하여 출력했다. 이때, 내부 코드가 [native code] 로 나타나는 것을 알게 되었다. 여기서 궁금증이 생겼는데, 대체 native code은 뭘까? 이를 이해하기 위해서는 자바스크립트 엔진을 이해하는 것이 좋다. 자바스크립트는 웹 환경에서 빠르게 개발하기 위한 언어를 구상하던 과정에서 생겨난 언어로, 자바스크립트가 돌아가는 엔진 자체는 보통 C / C++ , 최근의 경우 Rust 등의 성능을 중시하는 언어를 통해 작성된다. 이때 console.log 등 엔진에 내장된 기능..
[자바스크립트] 자바스크립트 엔진 01 생각하다 보니, 자바스크립트를 사용하면서도 실제로 이 언어가 어떻게 작동하는지에 대해서는 생각해 본 적이 없었다. 당연한 이야기지만, 컴퓨터는 프로그래밍 언어 자체를 인식하지는 못한다. 기본적으로 프로그래밍 언어는 사람의 사용을 목적으로 만들었기 때문에, 이를 기계어로 번역하는 과정이 필요하다. 이 시점에서 나는 자바스크립트의 경우 어떻게 변환과정을 거치는지에 대해 궁금해졌다. 자바스크립트에 대해 우선, 자바스크립트가 무엇인지 생각해보자. 자바스크립트는 ECMA-262의 사양을 구현하는 언어로, 비영리 표준화 단체인 ecma의 TC39 위원회에 의해 관리되고 있다. 사양은 일종의 인터페이스라고 볼 수 있는데, 사양을 구현한다는 의미는 자바스크립트가 ECMA script라는 인터페이스를 만족하도록 구현되었..