본문 바로가기
반응형

분류 전체보기227

JS 모듈 모듈은 내가 js를 하면서 가장 관심있게 공부했던 주제이다. 눈으로 위에서 아래로 읽어나가면서 직관적으로 흐름이 파악되는 코드작성하는 것을 좋아하는데, 그 중심에는 선언적 프로그래밍과 모듈이 있었다. 주로 순수함수를 여러개 만들어서 레고조립하듯이 했는데, 어느순간부터는 객체로 관리가 필요한 시점이왔고, Array, Math 와 같이 비슷한 기능을 하는것을 모듈로 만들어보고 싶었다. 이번에 재대로 한번 더 공부해 볼 수있어서 설렌다 태초의 자바스크립트 는 모듈기능이 없었다. 그러나 점차 스크립트의 크기가 커지고 기능이 다양해지면서 특별한 라이브러리들이 공유되기 시작했고, 모듈시스템을 도입하게 되었다. 대표적으로 1. AMD - requireJS라는 라이브러리를 통해 개발 2. CommonJS - node에.. 2022. 9. 4.
제너레이터 함수는 하나의 값을 반환하지만, generator 는 여러개의 값을 필요에 따라서 하나씩 반환(yield)한다. function* 로 선언할 수 있다. function* generator() { yield 1; yield 2; return 3; } let gen = generator(); console.log(gen.next()); // {value: 1, done: false} console.log(gen.next()); // {value: 2, done: false} console.log(gen.next()); // {value: 3, done: true} console.log(gen.next()); // {value: undefined, done: true} for.. of 마지막 return 값은.. 2022. 9. 4.
Promise의 5가지 API Promise.all(iterable) 완료된는 순서가 상관없는 여러개의 promise를 비동기적으로 실행하고, 결과값을 한번에 받는 함수 let urls = [ 'https://api.github.com/users/iliakan', 'https://api.github.com/users/Violet-Bora-Lee', 'https://api.github.com/users/jeresig' ]; // fetch를 사용해 url을 프라미스로 매핑합니다. let requests = urls.map(url => fetch(url)); // Promise.all은 모든 작업이 이행될 때까지 기다립니다. Promise.all(requests) .then(responses => responses.forEach( res.. 2022. 9. 4.
try ... catch 와 에러 핸들링 예상치 못한 에러가 발생하면, 스크립트는 즉시 중단되고 콘솔에 에러가 출력된다. 하지만 스크립트가 죽는경우는 최악의 경우이기 때문에, 에러 발생 소지가 있는 곳에서 try.. catch 구문을 통해 발생한 에러를 핸들링할 수 있다. try 구문에는 실행가능한 코드만 동작한다. 코드를 읽는 중에 발생하는 에러를 parse-time error 라고하고, try 구문 내용이 유효한 코드만 에러를 처리할 수 있다. 이런 에러를 runtime error 혹은 exception 이라고 한다. 에러처리가 안되는 경우 scheduled 된 코드에서 발생한 예외는 잡을 수 없다. 콜백함수 내의 코드는 실행될 시점에는 try.. catch문 바깥영역이기 때문이다. try { setTimeout(function() { no.. 2022. 9. 4.
내장 클래스 확장하기 상속을 유연하게 사용할 때는 기존의 클래스를 확장하고자 할때 라고생각한다. 예를들면 배열에 isEmpty()라는 메서드를 추가하고자 한다면 아래와 같이 할 수 있다. class MyArray extends Array { isEmpty() { return this.length === 0; } } let arr = new MyArray(); console.log(arr); // [] console.log(arr.isEmpty()); // true 2022. 9. 3.
class의 정적 메서드, 정적 프로퍼티 prototype이 아닌 함수 자체에 메서드를 설정할 수 있는데, 이를 정적 메서드라고 한다. (static method) class User { constructor() {} static staticMethod() { console.log(this); } say() { console.log(this); } } console.log(User.prototype.constructor); // [class User] console.log(User); // [class User] User.staticMethod(); // [class User] let u = new User(); User.prototype.say(); // {} u.say(); // User {} 즉, 함수를 객체로서 보았을때 프로퍼티를 추가한.. 2022. 9. 3.
반응형