javascript

TIL/JavaScript

[240126] 실행 컨텍스트 - (1)

실행 컨텍스트(execution context)란? 함수 실행에 대한 세부 정보를 담고 있는 내부 데이터 객체. 동일한 환경에 있는 환경 정보들을 모은 실행 컨텍스트를 콜스택에 쌓아올린 후 실행하여 코드의 환경과 순서를 보장할 수 있게 된다. 실행 컨텍스트는 언제 생성될까? 하나의 실행 컨텍스트를 구성할 수 있는 방법은 다음과 같다. 전역공간 - 자동으로 전역 실행 컨텍스트 생성 함수 - 함수 실행 컨텍스트는 함수의 선언이 아닌 실행될 때 생성된다 eval() 함수 ES6+에서의 블록({}) 실행 컨텍스트와 콜스택 const x = 1; function foo() { const y = 2; function bar() { const z = 3; console.log(x + y + z); } bar(); }..

TIL/Node.js

[240124] Node.js란? (+ V8, JIT 컴파일) - (기초)

Node.js란? Node.js is an open-source and cross-platform JavaScript runtime environment. Node.js는 JS 런타임 환경이다. Node.js runs the V8 JavaScript engine, Node.js는 V8 JS 엔진을 실행한다. JS 런타임이란? 런타임이란 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 뜻한다. 브라우저, Node.js, RN, 일렉트론 등이 있다. 따라서 Node.js는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있게 하는 환경이다. JS 엔진이란? 컴퓨터가 JS 언어를 이해할 수 있도록 기계어로 번역하고 실행시켜주는 엔진 JS 엔진의 코드 실행 과정 파싱(parsing) ⏩️ 컴파일링(compili..

알고리즘/자료구조

[JS] 자바스크립트에는 내장 라이브러리에 큐가 없는데 어떡하지

BFS 문제를 풀다가 JS에는 큐가 구현되어 있지 않다는 것을 알게 되었다 ^__^ 코딩테스트에서 큐가 필요한 상황이 오면 어떻게 해야 할까? 1. 시간복잡도 O(N) 시간제한이 널널할 때는 Array.shift() 를 사용하자. 큐의 pop과 동일한 기능을 한다. 하지만 배열의 원소를 하나씩 당기기 때문에 시간복잡도가 O(N)이다. 2. 시간복잡도 O(1) pop할 원소의 인덱스를 변수를 만들어 저장하자. let front = 0; while (front < queue.length) { const [x, y, z] = queue[top]; front += 1; /* ... */ } 인덱스를 옮김으로써 가장 앞의 원소가 어떤 것인지 판별할 수 있게 되었다. 실제 원소가 삭제되지는 않지만 FIFO 흉내내..

TIL/JavaScript

[240108] const로 선언한 배열, 객체의 요소 또는 속성을 변경할 수 있는 이유는 무엇일까

자바스크립트의 원시타입과 참조타입 원시타입 String Number Bigint Boolean null undefined Symbol (ES6) 참조타입 Object Array function 자바스크립트의 작동원리 아래는 JS 엔진을 추상화한 그림이다. 콜스택 - 함수의 호출과 관계되는 지역변수, 매개변수 저장 메모리힙 - 사용자에 의해 직접 동적으로 할당되고 해제 원시타입의 데이터 할당 변수에 할당될 때 let foo = 10; // 변수 foo에는 10이 저장된 콜스택 메모리의 주소값이 저장 변수의 값은 콜스택 영역에 저장 변수에는 해당 콜스택 영역의 주소가 저장 재할당될 때 let foo = 10; foo = 20; 변수의 값은 새로운 콜스택 영역에 저장 변수에는 해당 콜스택 영역의 주소가 저장 ..

TIL/JavaScript

[240105] 호이스팅, 변수 생성 과정, TDZ

호이스팅이란? 스코프 안에 선언한 것들을 실행 전 스코프의 최상단으로 끌어올리는 것 .. 이 아니라! 끌어올려진 것 같은 현상 호이스팅의 대상 자바스크립트의 모든 선언에만 호이스팅이 일어난다. 즉, 할당에는 호이스팅이 일어나지 않는다. 변수 생성 과정 [1] 선언 단계(Declaration phase) 변수를 실행 컨텍스트의 변수 객체에 등록한다. 이 변수 객체는 스코프가 참조하는 대상이 된다. [2] 초기화 단계(Initialization phase) 변수 객체에 등록된 변수를 위한 공간을 메모리에 확보한다. 변수는 undefined로 초기화된다. [3] 할당 단계(Assignment phase) undefined로 초기화된 변수에 실제 값을 할당한다. 변수 생성 과정은 어떻게 진행되는가? 함수 선언문..

알고리즘/코딩테스트

[JS] 배열을 순회하는 반복문, 함수 (for, for ... of, map(), filter(), forEach(), reduce()) 비교

JS 코딩테스트에서 상황별로 유리한 반복문과 함수에 대한 내용을 다룹니다. 시간복잡도 O(n)으로 동일하다. for for (let i = 0; i < 배열.length; i++) { /* ... */ } 반복 시작점, 끝점, 증분 커스텀 가능 return제어 O for ... of for (const item of 배열) { /* ... */ } 배열에서 값만 취할 때 사용 return제어 O forEach와 다르게 iterable 객체면 다 순회가능 cf. for...in 은 객체를 순회 or 인덱스값이 필요할 때 용이 (배열도 객체이긴 하지만, key인 index값만 가져올 수 있기 때문에 배열에서는 for...of가 유리하다) map const arr = ['1', '2', '3']; const ..

햄oOoOo
'javascript' 태그의 글 목록 (2 Page)