Promise의 정의 Promise는 자바스크립트 비동기 처리에 사용되는 객체입니다. 여기서 자바스크립트의 비동기 처리란 ‘특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 먼저 수행하는 자바스크립트의 특성'을 의미하며, Promise 객체를 사용해 순서를 보장해 줄 수 있습니다. 하지만 비동기처리를 위해 Promise를 잘못사용하면 성능에 좋지 못한 결과를 초래할 수 있습니다. Promise의 병렬처리란? Promise의 병렬처리란 동시에 여러 Promise를 실행하는 것을 의미하는데. 동시에 완료해야 하는 서로 연관성이 없는 독립적인 비동기작업을 수행할때 유용하게 사용합니다. 자바스크립트는 Promise를 병렬로 실행하기 위한 몇 가지 method를 제공하는데, 이 method를 상황에 맞..
자바스크립트는 스크립트 언어라서 즉석에서 코드를 실행할 수 있음 REPL이라는 콘솔제공 R(Read),E(Evaluate),P(Print),L(Loop) 윈도우에서는 명령 프롬프트, 맥이나 리눅스에서는 터미널에서 node입력 프롬프트가 > 모양으로 바뀌면, 자바스크립트 코드 입력 입력한 값의 결과값이 바로 출력. 간단한 코드 테스트 용도 > const str = 'Hello World, hello node'; undefined > console.log(str) Hellor world, hello node undefined > 모듈 노드는 자바스크립트 코드를 모듈로 만들 수 있음 모듈 : 특정한 기능을 하는 함수나 변수들의 집합 모듈로 만들면 여러 프로그램에서 재사용 가능 module.exports로 모듈..
function one() { second(); console.log("하나") } function second() { third(); console.log("둘") } function third() { console.log("셋") } one(); 더보기 코드순서 셋 > 둘 > 하나 ↑ 이순서로 쌓이고 third() ↓이순서로 실행돰 second() first() anonymous 호출스택(함수의 호출, 자료구조의 스택) anonymous는 가상의 전역 컨텍스트(항상 존재) 함수 호출 순서대로 쌓이고 역순으로 실행됨 함수실행이 완료되면 스택에서 사라짐 LIFO(Last in first out)나중에 쌓인게 먼저나가는 후입 선출 구조로 스택이라 불림 function oneMore() { console.l..
노드교과서를 토대로 정리한 내용 1. 노드의 정의 Node.js는 크롬 V8자바스크립트 엔진으로 빌드된 자바스크립트 실행기로 브라우저의 종속성에서 벗어남 멀티쓰레드인 자바에비해 싱글쓰레드와 비동기가 가능하여 쉽게 접근이 가능한 장점으로 인기가 폭증 참고서 https://ko.javascript.info/ 모던 JavaScript 튜토리얼 ko.javascript.info 2. 내부구조 2008년 V8엔진 출시 후 09년 노드 프로젝트 시작
for in 반복문 Object에 사용 var 오브젝트 = { name : 'Kim', age : 30 }; for (var key in 오브젝트) { console.log(오브젝트[key]); // Kim 30 } 특징 1. 셀수있는 것만 출력해줌(enumerable) var 오브젝트 = { name : 'Kim', age : 30 }; console.log( Object.getOwnPropertyDescriptor(오브젝트, 'name') ); //{value: "Kim", writable: true, enumerable: true, configurable: true} enumerable이 true인 자료들만 for in 반복문이 출력가능 2. 부모의 prototype에 저장된 것도 출력 class ..
Promise 성공하면 then(), 실패하면 catch()를 실행 1. 일단 new Promise()로 생성된 변수를 콘솔창에 출력해보시면 현재 상태를 알 수 있음 성공/실패 판정 전에는 성공 후엔 실패 후엔 이렇게 프로미스 오브젝트들은 3개 상태가 있습니다. 그리고 성공을 실패나 대기상태로 다시 되돌릴 순 없음 2. Promise는 동기를 비동기로 만들어주는 코드가 아님 Promise는 비동기적 실행과 전혀 상관이 없습니다. 그냥 코딩을 예쁘게 할 수 있는 일종의 디자인 패턴입니다. var 프로미스 = new Promise(function(성공, 실패){ var 어려운연산 = 1 + 1; 성공(); }); 프로미스.then(function(){ console.log('연산이 성공했습니다') }).ca..
Array 안에 있는 데이터를 변수에 담는 방법 var array = [2,3,4]; var a = array[0]; var b = array[1]; var [a,b,c] = [2,3,4]; //디폴트값도 가능 var [a,b,c = 5] = [2,3]; Object 안에 있는 데이터를 변수에 담는 방법 var { name : a, age : b } = { name : 'Kim', age : 30 }; var { name, age } = { name : 'Kim', age : 30 }; //name = 'Kim' 변수를 object로 집어넣고 싶은 경우 key값과 value값이 동일하면 하나로 생략이 가능 var name = 'Kim'; var age = 30; var obj = { name, age }..
Constructor 비슷한 object를 쉽게 찍어낼수 있는 문법 constructor안에서 쓰이는 this는 새로생성되는 object를 뜻함 상속(inheritance)이라함 - this : 기계에서 새로 생성되는 object (instance) - 기계 : object생성기(constructor, 생성자) //var 학생1 = { name : 'Kim', age : 15 }; function 기계(이름,나이){ this.name = 이름; this.age = 나이; this.sayHi = function() { console.log('안녕하세요'+ this.name +'입니다') } } var 학생1 = new 기계('park',13); //기계 {name: 'park', age: 13, sayHi..
만능 for문 하지만.. 개발하다보면 배열에서 뭘 꺼내서 지지고볶고할일이 참 많다. 특히 알고리즘을 풀다보면 다 이러한 것들인데 응용력이 떨어지는 내겐 그저 for문과 map돌리는것외엔 생각나는게 없다. 그래서 코드가 더 직관적이고 깔끔하고 쓰임새가 많은 배열함수들이 정리가필요했다. 1. Array.forEach Array.forEach(element => { }); 배열안에 요소에 어떤 작업을 수행할때 let words = ['a','b','c','d'] words.forEach(word => { console.log(word) }); // a // b // c // d words.forEach((word,index) => { console.log(word,index) }); // a 0 // b 1 ..
함수의 default 파라미터 넣기 가능 등호, 수학연산자, 다른파라미터와 연산도 가능하고 함수도 넣을수있음 function 더하기 (a, b = 10){ console.log(a + b) } 더하기(1); // 11 function 더하기 (a, b = 2 * 5){ console.log(a + b) } 더하기(1); // 11 function 더하기 (a, b = 2 * a){ console.log(a + b) } 더하기(3); // 9 function 임시함수(){ return 10 } function 더하기 (a, b = 임시함수() ){ console.log(a + b) } 더하기(3); // 13 함수의 arguments arguments는 입력된 파라미터를 [ ] 안에 감싸주어 파라미터들을 ..