[JavaScript] require/exports 와 import/export 차이
2023. 1. 29. 14:48
Today I learned
require/exports require/exports 방식은 기존에 Node.js 에서 사용되던 CommonJS 모듈 방식으로, module.exports 객체에 모듈 전체를 담아 내보내고 require를 통해 해당 모듈을 불러오는 방식이다. 따라서 require를 사용하면 모듈 전체를 불러오게 되는데, 불필요한 모듈이 로드되기도 하고 어떤 부분을 모듈 내에서 사용했는지 알 수 없다. import/export import/export 방식은 ES6에 새로 등장한 ES 모듈 방식으로, import를 사용해 모듈을 가져온 뒤 만든 객체를 내보내기 위해 export를 사용하는 방식이다. 실제로 쓰이는 부분만 불러와 사용하기 때문에 메모리를 절약할 수 있다. export 를 사용하는 방식은 require와는..
[JavaScript] 커링
2023. 1. 12. 17:21
프로그래밍 언어/JavaScript
커링이란? 커링이란 f(a, b, c) 를 f(a)(b)(c) 와 같이 여러 개의 인수를 단일 프로세스로, 호출 가능한 함수를 다중 프로세스 형태로 변환할 수 있도록 하는 기술이다. 보통 자바스크립트에서 커링되어진 함수는 평소처럼 호출도 하고 만약에 인수들이 충분하지 않을 때는 partial 을 반환한다. 커링은 partial 을 쉽게 적용할 수 있도록 해준다. 커링을 사용하는 이유? 커링 함수를 사용하는 이유는 함수가 여러 개의 인자를 받을 때 특정 인자를 고정할 수 있습니다. 그로 인해 함수의 재사용성을 높일 수 있습니다. // 커링을 사용한 함수 const currying = a => b => c => a * b * c; console.log(currying(1)(2)(3)); // 6 // 인수 ..
[JavaScript] iterable 객체
2023. 1. 11. 14:06
프로그래밍 언어/JavaScript
들어가며 JavaScript 에서 Array 가 제공하는 map, filter, reduce 등의 메서드를 직접 구현하는 과정에서 for ... of 문을 공통적으로 사용했다. for ... of 문으로 순회 가능하기 위해서는 반드시 해당 자료구조가 iterable 해야 한다는 것을 알게 되었다. 하지만 iterable 이 무엇이고 어떤 역할을 하는지 알지 못해 이번 시간을 통해 이에 대해 알아보고자 한다. ko.javascript.info 사이트에서 이에 대해 잘 설명해주고 있어 이 자료를 참고했다. iterable 객체란? iterable 객체란 반복 가능한 객체라고 부르기도 하며, for ... of 구문과 함께 ES2015에서 도입되었다. iterable 객체와 다른 객체와의 가장 큰 차이점은 객..
[JavaScript] 예시를 통해 알아보는 this
2022. 12. 28. 14:46
프로그래밍 언어/JavaScript
JavaScript에서 this 는 함수 호출 방법에 의해 결정된다. 예시1) 객체 메소드의 this const phone = { name: 'Galaxy Note 3', getName: function () { console.log("getName: ", this); }, } phone.getName(); // output: getName: {name: 'Galaxy Note 3', getName: f} getName 메소드의 호출자가 phone 객체이므로, getName 실행 시 this 는 phone 객체이다. 예시2) 전역 객체에서의 this const phone = { name: 'Galaxy Note 3', getName: function () { console.log("getName: ", ..
[JavaScript] 문자열 자르기 (substr, substring, slice)
2022. 12. 5. 15:02
프로그래밍 언어/JavaScript
들어가며 이번 게시글에서는 자바스크립트에서 문자열을 자르는 함수에 대해 알아보고자 합니다. 자바스크립트에서 문자열을 자르는 함수 자바스크립트에서 문자열을 자르기 위해서는 substr(), substring(), slice() 함수를 사용하면 됩니다. String.prototype.substr(start[, length]) String.prototype.substring(indexStart[, indexEnd]) String.prototype.slice(beginIndex[, endIndex]) 위 세 가지 함수의 인수 중 대괄호([]) 부분은 생략 가능하며, 생략할 경우 시작 위치부터 문자열 끝까지 자릅니다. substr() 함수 substr() 함수는 시작 위치부터 해당 길이만큼 문자열을 자르는 기본적..
스택(Stack)
2022. 11. 11. 12:42
컴퓨터 과학/자료구조
스택(Stack) - LIFO(Last In First Out) 으로 데이터를 저장하는 구조입니다. - 나중에 들어온 데이터가 먼저 나갑니다. - 주요 동작으로는 push, pop, peek 등이 있습니다. - push(데이터) : 스택에 데이터 추가 - pop() : 스택으로부터 최상단에 있는 데이터 제거 - peek() : 스택 최상단에 있는 데이터 값 반환 JavaScript 로 스택 구현(feat. Array) class Stack { constructor() { // item들을 받을 배열 생성 this.stack = []; } isEmpty() { return this.stack.length == 0; } push(item) { this.stack.push(item); } pop() { ret..
[JavaScript] 반복문
2022. 11. 5. 19:38
프로그래밍 언어/JavaScript
반복문이란? 일반명사) 되풀이하는 것 고유명사) 프로그램 소스 코드 내에서 조건을 만족할 때까지 특정한 부분의 코드가 반복적으로 수행될 수 있도록 하는 구문 반복문의 종류 for 문 for 문은 조건식이 거짓으로 판별될 때까지 코드 블록을 반복 실행한다. 문법 : for (초기화식; 조건식; 증감식) { // ... 조건식이 참인 경우 반복 실행될 코드 ... } 예시) for (let i = 0; i < 3; i++) { // 0, 1, 2 가 출력된다. console.log(i); } 초기화식 let i = 0 반복문에 진입할 때 단 한 번 실행됨. 조건식 i < 3 반복마다 해당 조건이 확인됨. false 이면 반복문을 멈춤. 본문 console.log(i) 조건이 true 일 동안 계속해서 실행된..
[JavaScript] 호이스팅
2022. 11. 5. 19:28
프로그래밍 언어/JavaScript
호이스팅이란? 일반명사) 끌어 올리기 고유명사) 선언한 위치와 상관없이 함수, 변수의 선언부를 인접한 스코프의 최상단으로 끌어올려 스코프 내 어디서든 해당 식별자를 관측할 수 있는 현상 호이스팅은 어떻게 발생하는가? 하지만 자바스크립트 엔진은 실제로 코드를 실행하는 시점에 함수, 변수의 선언부를 인접한 스코프의 최상단으로 끌어올릴 만한 능력이 없다. 단지 코드 실행 전에 어떤 과정을 거쳐서 변수, 함수에 대한 전체적인 정보를 미리 알고 있을 뿐이다. 여기서 말하는 어떤 과정이란 참고) 자바스크립트는 코드 실행 전 따로 컴파일 과정을 거친다. 컴파일 : 사람이 이해하는 언어로 이루어진 코드를 컴퓨터가 이해할 수 있도록 쪼개고, 체계적인 구조로 재가공하여 전체를 분석하는 일련의 과정 자바스크립트 엔진은 코드..