목록전체 글 (3)
개발
v8 engine은 아래와 같은 과정을 거쳐서 js 코드를 실행한다. v8 engine의 전체 내용을 담는 글이 아니기에 전반적인 flow에 대해 간략하게만 적어보자면 JS 코드를 통해 Scanner가 Tokens를 생성한다. 생성된 Token 들을 기반으로 Parser는 AST (추상 구문 트리)를 생성하게 된다. 1 2 3 4 5 const c = "hello" let l = "v8" function e() { return "engine" } cs 에 대한 AST는 다음과 같다. 더보기 ... "type": "VariableDeclaration", "declarations": [ { "type": "VariableDeclarator", "id": { "name": "c" }, "init": { "va..
참고: https://github.com/v8/v8 1. var 은 재선언 가능하나 let, const는 불가하다. var의 경우 1 2 3 4 5 6 7 8 var a = 1; var a = 2; var a = 3; console.log(a); //output: 3 cs 와 같은 결과가 출력되는 반면 let, const는 아래와 같은 결과가 출력된다. 1 2 3 4 5 6 7 8 let a = 1; let a = 1; //output: SyntaxError: Identifier 'a' has already been declared const b = 2; const b = 2; //output: SyntaxError: Identifier 'b' has already been declared cs Java..
비동기 순차처리 const urls = ['url1', 'url2', 'url3']; function urlDownload(url) { return new Promise(((resolve, reject) => { setTimeout(() => { // TODO: Something console.log(url); resolve(); }, 1000); })); }; const startDownload = async (urls) => { for(const url of urls) { await urlDownload(url); }; }; startDownload(urls); 병렬 처리 const urls = ['url1', 'url2', 'url3']; function urlDownload(url) { retur..