본문 바로가기

Node.js

(16)
<Map / Set> const arr = [1,2,3,2,3,5,2] const s2 = new Set(arr) s2 //Set(4){1,2,3,5} Array.from(S2) //(4)[1,2,3,5] S2를 배열로 변경한다. 1. Map(객체와 유사)과 Set(배열과 유사) - 객체와 배열은 자유도가 높기 때문에 다른 사람의 코드를 볼 때 어떤 용도로 썼는지 이해하기 어려울 때가 있다. => 그런 점을 보완한 것이 Map, Set 1) Map - 생성자 함수 - 객체의 반복 2) set - 변수.set( '키', '값' ) : 키와 값으로 이루어진 객체(배열)를 변수에 넣어준다. 3)get - 변수.get( '키' ) : 생성자함수에서 키(인덱스)에 해당하는 값을 꺼내온다. const m = new Map() //Map..
비동기 : async/await 1. async/await - Promise then을 한 번 더 축약한 것 - Promise 지옥에서 벗어날 수 있다. - Promise는 왼쪽에서 오른쪽으로 읽지만, async/await은 오른쪽에서 왼쪽으로 읽어줘야한다. //promise 함수 function findAndSaveUser(Users){ Users.findOne({}) //Users에서 객체 하나를 반환해라. .then((user) => { //성공하면 user에 {name: 'zero} 를 넣어라. user.name = 'zero' return user.save() //프로퍼티를 추가한 user를 저장해라. }) .then((user) => { //결과값으로 받아온 user를 이용해 return Users.findOne({ gend..
비동기 : Promise 1. Promise - 어떤 동작을 비동기로 실행하는 것 - 내용이 실행은 되었지만 결과를 아직 반환하지 않은 객체이다. - 콜백헬이라고 불리는 지저분한 자바스크립트 코드의 해결책이다. * Promise의 인스턴스 객체를 생성하는 부분은 동기적으로 실행이 된다. * promise에서 결과를 가지고 있다가 then, catch할 때 결과를 꺼낸다. * .then/ .catch를 실행할 때 비동기적으로 실행이 된다. const condition = true; const promise = new Promise((resolve, reject) => { // Promise 인스턴스 객체 생성 if(condition){ resolve('성공') //무언가를 실행 후 resolve를 호출하면 성공한 것 } else{..
class 1. 클래스 - 프로토타입 문법을 깔끔하게 작성할 수 있는 것 - Constructor(생성장), Extends(상속)등을 깔끔하게 처리해준다. - 코드가 그룹화되어 가독성이 향상된다. //프로토타입 문법 //생성자 함수 선언 var Human = function(type){ this.type = type||'human' } //생성자 메서드(스태틱메서드) 선언 Human.isHuman = function(human){ return human instanceof Human } //인스턴스 메서드(프로토타입 메서드) 선언 Human.prototype.breathe = function(){ alert('h-a-a-a-m') } * 프로토타입 문법의 세가지 변수는 하나의 그룹이다. * 분리되어있는 세가지 변수..
구조분해할당 1. 구조분해할당이란? : 구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식 - 1:1로 변수에 값을 담음. -나머지연산자로 1:다수로 값을 담을 수 있음. //배열 var a, b, rest; [a, b] = [10, 20]; console.log(a); // 10 console.log(b); // 20 //배열, 나머지연산자 [a, b, ...rest] = [10, 20, 30, 40, 50]; console.log(a); // 10 console.log(b); // 20 console.log(rest); // [30, 40, 50] //객체 ({ a, b } = { a: 10, b: 20 }); console.log(a); /..
화살표함수 1. this 1) 일반함수 안에서 this는 자기 자신을 가리킨다. =>일반함수 안의 중첩함수 안에서 부모 함수를 가리키려면 중간다리 역할이 필요하다. var relationship1 = { name: 'zero' friends: ['nero', 'hero', 'xero'] logFriends: function(){ var that = this this.friends.forEach(function(friend){ console.log(that, name, friend) }) } } 2) 화살표함수 안에서 this는 부모함수를 가리킨다. var relationship2 = { name: 'zero', friends: ['nero', 'hero', 'xero'], logFriends(){ this.frie..
호출스택 1. 호출스택 - Anonymous는 가상의 전역컨텍스트이다. *Anonymous는 파일 실행 시 호출 스택 맨 밑에 깔린다. - 함수 호출 순서대로 쌓이고, 역순으로 실행된다. - 함수 실행이 완료되면 스택에서 빠진다. - LIFO 구조라서 스택이라고 불린다. * LIFO 구조 : 나중에 들어온 함수가 먼저 실행된다. * FIFO 구조 : 먼저 들어온 함수가 먼저 실행된다. 2. 이벤트 루프 알아보기 1) 호출스택이 비면 2) 백그라운드의 비동기 함수를 실행하고 3) 콜백함수가 태스크큐로 들어온다. 4) 태스크큐는 호출스택으로 들어간다. 5) 호출스택으로 들어온 콜백함수를 실행시킨다. 6) 호출스택, 백그라운드, 태스크큐가 모두 비면 실행이 완료된다. *Promise는 동기로 작동하지만, .then/...
Node.js 의 정의 1. 노드란? - Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임(=실행기) => Node.js가 있기때문에 자바스크립트는 HTML, CSS의 종속성으로부터 벗어난다. - 자바스크립트로 만든 프로그램을 실행할 수 있게 해준다. -런타임 : 특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상머신의 상태 => 다른 런타임으로는 웹브라우저가 있다.(크롬, 엣지, 사파리, 파이어폭스 등) 2. 노드의 내부 구조 1) V8 엔진 : 오픈 소스 자바스크립트 엔진(속도 문제를 개선) 2) libuv : 노드의 특성인 이벤트 기반, 논블로킹 I/O모델을 구현한 라이브러리(비동기 I/O) 3. 노드의 특성 1) 이벤트 기반 : 이벤트가 발생할 때 미리 지정해 둔 작업을 수행하는 방식 -..