개발언어
-
NodeJS - Promise, async/await개발언어/Node.js 2023. 3. 27. 15:51
Promise function findAndSaveUser(Users) { Users.findOne({}) .then((user) => { user.name = "surge100"; return user.save(); }) .then((user) => { return Users.findOne({ gender: "m" }); }) .then((user) => { //생략 }) .catch((err) => { console.error(err); }); } Promise.all(배열): 여러 개 의 프로미스를 동시에 실행 하나라도 실패하면 catch로 간다. allSettled로 실패한 것만 추려낼 수 있다. 콜백 헬이라고 불리는 지저분한 자바스크림트 코드의 해결책 프로미스 : 내용이 실행은 되었지만 결과를 ..
-
TypeScript - Tuple(튜플)개발언어/TypeScript 2023. 3. 22. 15:26
Tuple(튜플) 튜플은 배열의 길이가 고정되고 각 요소의 타입이 지정되어 있는 배열 형식을 의미한다. //튜플 타입으로 선언 let x: [string, number]; //초기화 x = ["hello", 10]; // 성공 //잘못된 초기화 x = [10,"hello"]; //오류 튜플 타입을 사용하면, 요소의 타입과 개수가 고정된 배열을 표현할 수 있다. 단 요소들의 타입이 모두 같을 필요는 없다. 예를 들어 위 코드와 같이 number , string이 쌍으로 있는 값을 나타내고 싶을 수 있다. console.log(x[0].substring(1)); console.log(x[1].substring(1)) //오류, 'number'에는 'substring' 이 없다. console.log(x[0]..
-
NodeJS - 모듈(import, export default)개발언어/Node.js 2023. 2. 20. 11:52
ECMAScript모듈 ES모듈은 공식적인 자바스크립트 모듈형식이다. 노드에서 아직까지는 CommonJS모듈을 많이 쓰긴 하지만, ES모듈이 표준으로 정해지면서 점점 ES모듈을 사용하는 비중이 늘어나고 있습니다. 브라우저에서도 ES모듈을 사용할 수 있어 브라우저와 노드 모두에 같은 모듈형시을 사용할 수 있다는 것이 장점이다. CommonJS모듈은 공식 모듈이 아니라 표준 묘듈에 가까웠다. 사실 표준 모듈이라고 단언하기도 어려운 점이 JavaScrip자체이 표준이 없었기 때문에 노드생태계 에서는 CommonJS라는 자체적인 표준을 정해서 사용하고 있었던 것이다. 하지만 브라우저 쪽에서 먼저 ES 모듈이 표준모듈로 정해지면서 노드에서도 ES모듈을 많이 사용하는 추세이다. 또한 장기적인 관점에서 모면 Comm..
-
NodeJS - 내장 객체 알아보기(this, require)개발언어/Node.js 2023. 2. 20. 09:51
const checkNumber = require("./func"); const { odd, even } = require("./var"); function checkStringOddEven(str) { if (str.length % 2) { return odd; } else { return even; } } console.log(checkNumber(10)); console.log(checkStringOddEven("hello")); this 노드에서 this를 사용할 때 주의점이 존재한다. 최상위 Scope의 this는 module.exports를 가르킨다. 그 외에는 브라우저의 자바스크립트와 동일하다. 함수 선언문 내부의 this는 global(전역) 객체를 가리킨다. 노드에서의 this는 브라우저..
-
NodeJS - const, let /템플릿 문자열, 객체 리터럴/ 화살표 함수개발언어/Node.js 2023. 2. 18. 09:13
var와 const의 Scope if(true){ var x = 3; } console.log(x); //3 if(true){ const y = 3; } console.log(y); //Uncaught ReferenceError : y is not,define var는 블록 scope를 무시하다. 그래서 위 코드에서 처럼 var로 선언한 x의 경우 if 블록 밖에서도 x에 접근할 수 있다. 반면 const로 선언한 y 같은 경우는 블록 scope를 존중하기 때문에 블록 밖에서는 const y 변수에 접근할 수 없다. var가 Scope를 가지는 경우 if(true){ const x = 3; } console.log(x); //에러 function a(){ var y = 3; } console.log(y)..
-
NodeJS - Call Stack, Back Ground, Task Queue개발언어/Node.js 2023. 2. 17. 13:38
function oneMore() { console.log("one more"); } function run() { console.log("run run"); setTimeout(() => { console.log("wow"); }, 0); new Promise((resolve) => { resolve("hi"); }).then(console.log); oneMore(); } setTimeout(runs, 5000); file을 시작하면 일단 호출스택에 무조건 anonymous가 깔린다. 그리고 위 코드 대로라면 메모리에 실행되기 위한 함수 2개가 선언된다. 그리고 메서드 setTimeout이 바로 실행된다. setTimeout메서드 실행이 완료되면 호출스택에서 setTimeout(run,5000)이 ..
-
NodeJS - NodeJS 실행을 위한 JavaScript 문법2개발언어/JavaScript 2022. 12. 26. 18:29
Promise Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타낸다. Promise는 프로미스가 생성된 시점에는 알수 없을 지도 모르는 값의 대리자로 비동기 연산이 종료된 이후에 결과값 과 실패 사유를 처리하기 위한 처리기를 연결할 수 있다. 프로미스를 사용하면 비동기 메서드를 마치 동기 메서드가 반환하듯 값을 반환할 수 있다. 다만, 최종결과를 반환하는 것이 아니고, 미래의 어떤 시점에 결과를 제공하겠다는 '약속'을 반환한다. 프로미스는 다음중 하나의 상태를 가진다. 프로미스는 다음과 같은 규칙이 있다 먼저 프로미스 객체를 생성해야 한다. const condition = true; // true며 resolve, false면 reject const promise =..
-
JavaScript - 프로토타입 체인개발언어/JavaScript 2022. 12. 26. 14:25
프로토타입 객체도 또 다시 상위 프로토타입 객테로부터 메소드와 속성을 상속 받을 수 있고 그 상위 프로토타입 객체도 마찬가지이다. 이를 **프로토타입 체인(prototype chain)**이라 부르며 다른 객체에 정의된 메소드와 속성을 한 객체에서 사용할 수 있도록 하는 근간이다. 정확히 말하자면 상속되는 속성과 메소드들은 각 객체가 아니라 객체의 생성자의 protorype이라는 속성에 정의되어 있다. JavaScript에서 객체 인스턴스와 프로토타입 간의 연결(많은 브라우저들이 생성자의 prototype 속성에서 파생된 __proto__속성으로 객체 인스턴스를 구현하고 있다.)이 구성되며 이 연결을 따라 프로토타입 체인을 타고 올라가며 속성과 메소드를 탐색한다. 프로토타입 체인 const myObjec..