// //tip 34 부분적용 함수로 단일책임 매개변수를 관리하자 // //부분 적용 함수로 매개변수를 집중시키자 // //부분 적용 함수 : n개의 인자를 받는다면 m개의 인자를 기억해, 나중에 (n-m)개의 인자만 받아도 동작하는 함수 // //Lodash의 리바운스(단기간 동일 이벤트가 다량으로 발생시 처음이나 마지막의 이벤트만 한번 처리하는 것)에 사용됨 // //❎고차함수는 매개 변수를 가두는 방법으로 특별한 값을 제공, 원래의 인수에 접근할 수 있게 해두고 함수 실행 마칠 수 있음 // //또한, 매개변수를 분리해 함수의 의도를 명확하게 유지 // //고차함수는 다른 함수를 반환하는 함수이다. 함수 실행이 끝날때까지 최소 두단계를 걸친 매개변수가 있다는 것이다. // //이때, 부분 적용 함수..
JavaScript/You Don't know JS
//tip 32 테스트 하기 쉬운 함수를 만들자 //테스트는 매우 중요하다. //코드를 리팩토링 하기 쉽고, 오래된 코드를 이해하기 쉽고, 명확하고 버그가 적은 앱플리케이션을 만들 수 있다. //하지만 테스트를 작성하는 것은 어렵기 때문에 개발자들은 많이 안하려한다. //그렇지만 우리는 테스트할 수 있는 코드를 작성하는것에 집중해야한다. //테스트할 때 어려운점이라 하면 외부 의존성에 강하게 연결된 코드들이 어렵다. //여기서 외부 의존성이 높다고 말하는 것은 테스트하는 코드 외부에서 함수, API등을 불러와 테스트 할 함수와 밀접하게 결합되어 있다는 것이다. //이러한 문제는 모의객체(mock object)를 생성하여 함수를 가로채고 명시적인 반환값을 설정하게 만들어야 한다. //모의객체 : 주로 객체..
//tip 31 나머지 매개변수로 여러 개의 인수를 변수로 전달하자 //나머지 매개변수로 개수를 알 수 없는 다수의 매개변수를 전달하는 방법을 알아보자. //매개변수를 객체로 전달하는 것은 좋은 방법이지만 객체처럼 전달되는 매개변수들이 서로 다를때 즉, 객체를 다루는 경우에만 좋다. //그렇다면 갯수를 알 수 없는 비슷한 매개변수들을 어떻게 처리해야 하는가? //우선 내장된 arguments 객체를 이용해 해결해 보자. function getArguments() { return arguments; } getArguments(`Bloomsday`, `June 16`); console.log(getArguments(`Bloomsday`, `June 16`)) // { `0`: `Bloomsday`, `1`:..
//tip 29 해체 할당으로 객체 속성에 접근하라 //매개변수는 객체와 배열에서 정보를 빠르게 가져오는 좋은 기능이지만 //항상 순서를 지켜야하고, 매개변수를 건너뛰고 싶은 경우에도 작성해야 한다는 문제점이 있다. //그렇다면 함수의 여러개의 인수가 필요할때, 요구사항이 변경될 때는 어떻게 해야하는가? //사진의 정보들을 전달하는 예시를 보자 //이 경우에는 개별 매개변수로 전달하는 것은 옳지 않다. //많은 매개변수를 작성할 수 도 있고, 이미 구조화된 정보를 변경하는 것은 의미가 없다. const landscape = { title: `Landscape`, photographer: `Nathan`, equipment: `Cannon`, format: `digital`, src: `/landscape..
//tip 27 for-in문과 for-of문으로 반복문 정리 //이번에는 반복문의 명료성을 유지하는 법을 배워보자 //필요한 결과와 일치하지 않을 때는 반복문의 사용의 이점이 없다. const firm = new Map() .set(10, `Ivie Group`) .set(23, `Soundscaping Source`) .set(31, `Big 6`); console.log(firm); //컬랙션은 배열이 아니므로 for문을 사용할 수 없다. ❗❗그러므로 펼침 연산자를 이용해 맵을 배열로 변환하면 해결할 수 있다. const entries = [...firm]; for (let i = 0; i < entries.length; i++){ const [id, name] = entries[i]; if (!i..
//tip 25 체이닝으로 메서드를 연결하라 //체이닝을 간단히 정의 하자면 값을 다시 할항하지 않고 반환된 객체(또는 원래 객체)에 메서드를 바로 호출 하는 것이다. //더 간단히 여러개의 배열 메서드에서 배열이 반환 될 때, 배열 메서드를 연이어 호출하는 것. const sailors = [ { name: `yi hong`, active: true, email: `yiho@naver.com`, }, { name: `alex`, active: true, email: ``, }, { name: `nathan`, active: false, email: ``, }, ]; //먼저 active가 true로 된 사람들에게 메일을 보낼 수 있도록 true로 된 사람만 filter하는 코드를 작성 해보자 const..