안녕하세요. 이번 글에서는 자바스크립트에서의 enumerable, iterable(for in/ for of) 핵심만 알려드리겠습니다. 1. 알아야 하는 이유 자바스크립트 반복문에는 for, forEach 등이 있습니다. 근데 for in/ for of 를 사용해서도 반복을 구현할 수 있는데요. 두 반복문의 차이를 알려면 enumerable, iterable 속성을 알아야 합니다. 오늘 2가지 속성을 배워 for in/ for of를 언제 쓰는지 정확히 이해해 봐요! 2. for in - enumerable 2.1 사용이유 for in 반복문은 객체 값들을 반복하고 싶을 때 사용합니다. var obj = {num1: 1, num2: 2}; for(let key in obj){ console.log(obj..
안녕하세요 이번 글에서는 자바스크립트에서의 async/await - (동기, 비동기) 핵심만 알려드리겠습니다. 1. 사용이유 Promise 대신 코드를 동기적으로 짜고 싶을 때 사용하시면 됩니다. 2. async async키워드를 함수앞에 붙이면, 함수 자체가 Promise가 됩니다. 함수가 promise로 바꼇기에, 함수에 then을 붙일 수 있습니다. 그리고 귀찮게 Promise 생성할 때 마다 new Promise를 해 줄 필요도 없어집니다. async function say_hi () { console.log('hi'); } say_hi().then(function() { console.log('성공'); }) return을 통해 값을 then안으로 넣어줄 수 있습니다. async function..
안녕하세요. 이번 글에서는 자바스크립트에서의 promise(프로미스) - (동기, 비동기) 핵심만 알려드리겠습니다. 1. 사용이유 콜백함수와 마찬가지로 순서대로 코드를 짜고 싶을 때 사용합니다. 하지만 콜백함수보다 좋은 이유가 크게 2가지가 있습니다. 코드 가독성이 향상됩니다. 에러 처리가 가능합니다(catch) 예를 들어 2개의 함수를 순서대로 실행시켜 보겠습니다. const say_1 = () => { setTimeout(() => { console.log('1'); }, 0) } const say_2 = () => { console.log('2'); }; say_1(); say_2(); //2 1 코드에서 원한 건 1과 2가 순서대로 출력되는 것이었지만, say_1안엔 비동기함수 setTimtout..
안녕하세요 이번 글에서는 자바스크립트에서의 콜백함수 - (동기, 비동기) 핵심만 알려드리겠습니다. 1. 사용이유 비동기함수는 요청 결과가 반환되기 전에 다른 작업을 수행할 수 있는 장점이 있지만, 코드의 실행 순서를 유추하기 어려워 집니다. 그래서 콜백함수는 코드를 순서대로 실행하고 싶을 때 사용합니다. 그냥 함수 안에 함수를 넣으면 콜백함수입니다. 2. 사용방법 setTimeout(() => { console.log(1); }, 0); console.log(2); 위 코드에서 1,2, 순서대로 출력하고 싶지만, setTimtout은 비동기 함수기에 2,1 순서대로 출력됩니다. const say_1 = (callback) => { console.log(1); callback(); } const say_2..
안녕하세요 이번 글에서는 자바스크립트에서의 이벤트루프 - (동기, 비동기) 핵심만 알려드리겠습니다. 1. 동기, 비동기란? 한 번에 코드가 한 줄씩 차례로 실행된다는 걸 동기라고 합니다.(synchronous) 오늘 배울 stack이란 공간에서 코드가 한 줄씩 실행됩니다. 반면 실행에 시간이 걸리는 코드를 제쳐두고, 실행이 바로 가능한 코드를 먼저 실행하는 방식을 비동기 라고 합니다.(asynchrounous) 자바스크립트는 동기적인 언어며, 동시에 비동기적인 코드를 처리할 수 있습니다. 이벤트루프를 배우며 위의 개념을 이해해봐요! 동기, 비동기를 위해 크게 4가지를 아셔야 합니다. 1. event loop(이벤트 루프) (stack, heap, quque) 2. 콜백함수(call back functio..
안녕하세요 이번 글에서는 자바스크립트에서의 상속 - (class) 핵심만 알려드리겠습니다. 1. 사용이유 es6에서 constructor를 구현할 때 사용합니다. function으로 구현하는 상속이랑, 기능상 큰 차이는 없고 보기 쉽게 표현해 줍니다. 2. 사용방법 class my_class{ constructor(name) { this.name = name; } }; const class1 = new my_class('kim'); class는 constructor안에 this.name을 넣어줍니다. 그리고 함수(메서드)를 넣고 싶으면 constructor 안이나 바깥 중에 함수를 넣으면 됩니다. class my_class{ constructor(name) { this.name = name; //1. c..
안녕하세요. 이번 글에서는 자바스크립트에서의 상속 - (Prototype) 핵심만 알려드리겠습니다. 1. prototype 1.1 prototype이란? 지난 시간에 constructor를 이용해 객체를 여러 개 만드는 법을 배웠는데요. 근데 constructor로 객체를 만들면, Prototype이라는 항목이 constructor안에 자동으로 생성됩니다. 간단한 예시를 들어보겠습니다. function Person(name){ this.name = name; } var person1 = new Person('kim'); console.log(Person.prototype); construcor로 객체를 만들고 prototype이란 값을 찍어보았습니다.. 이런 이상한 값이 출력됩니다. 왜 construct..
안녕하세요 이번 글에서는 자바스크립트에서의 상속 - (constructor) 핵심만 알려드리겠습니다. 1. 상속이란? 상속이란 객체지향의 핵심 개념으로, 객체의 속성을 상속받은 객체를 만들 수 있습니다. 자바스크립트에서, 상속을 구현하는 크게 3가지 방법이 있습니다. 1. constructor(생성자) 2. Prototype(프로토타입) (prototype, __proto__) 3. class(클래스) 오늘은 첫 번째로 constructor에 대해 배워보겠습니다. 2. 사용이유 객체는 reference data type이기 때문에, 복사할 때 등호 대신 전개연산자 혹은 다른 복사 방법을 사용해야 합니다. 그게 불편하다면 constructor(생성자)를 사용하여 객체를 복사할 수 있습니다. 한마디로 비슷한..
안녕하세요. 이번 글에서는 자바스크립트에서의 destructuring(구조분해 할당) 핵심만 알려드리겠습니다. 1. 사용이유 객체나 배열 안의 값들을 변수로 분해해 줍니다. 그러면 일일이 할당하지 않아도 손쉽게 값을 가져올 수 있습니다. 2. 사용방법 2.1 배열 var arr = [1, 2]; var [a, b] = arr; console.log(a); //1 console.log(b); //2 위처럼 배열이랑 모양을 같게 해서 할당하면 destructuring을 해줍니다. 그러나 값이 없으면 undefined가 할당이 되는데요 var arr = [1]; var [a, b] = arr; console.log(a); //1 console.log(b); //undefined 이렇게 값이 없는 경우를 방지하..
1. 문제 분석 fs.readFileSync()는 Node.js의 파일 시스템(fs) 모듈에 포함된 함수로, 파일을 동기적으로 가져오는데요. 파일을 가져오기 위해 위 함수를 사용했지만, Error: ENOENT: no such file or directory, 오류가 나왔습니다. const private_key_file = fs.readFileSync('../libs/authkey.p8'); 이상하게 경로를 절대경로로 하면 파일을 찾고, 상대경로만 오류가 나더군요. 하지만 서버를 올리면 절대경로를 사용할 수 없기에, 해결 방법을 찾아야 했습니다. 2. 문제 원인 fs.readFileSync()는 파일을 읽을 때 현재 작업 디렉터리(current working directory, CWD)를 기준으로 상대 ..