*아래에서 사용될 함수(go, curry...)들은 이전 포스트들에서 설명되어 있습니다.📗지연성이 이루고자 하는 목표지금까지의 코드를 바탕으로 아래와 같은 코드가 실행된다고 생각해보자. go( range(100000), take(5), reduce(add), log);우선 range 함수를 통해 10만개의 index를 가진 배열이 생성되고 그 중 5개를 take 하여 reduce로 더하는 함수임을 알 수 있다.문제가 없어 보이지만, 10만개의 index중 단 5개만을 사용하고 나머지는 사용되지 않은 상태여서나머지 99995개의 배열 인덱스에 값이 평가된 것은 실제로 쓸모없는 일이 되었다.하지만, 웹에서 돌아가는 js의 특성상 실제 서비스에선 10만개의 index중 5개를 take ..
전체 글
프론트엔드 개발을 깎으며 인사이트를 공유하는 블로그입니다.📗이터러블/이터레이터 프로토콜 규약을 따른 map, filter, reduceconst log = console.log;const map = (f, iter) => { let res = []; for (const a of iter) { res.push(f(a)); } return res; }; const filter = (f, iter) => { let res = []; for (const a of iter) { if (f(a)) res.push(a); } return res; }; const reduce = (f, acc, iter) => { if (!iter) { // 3번째 인자까지 작성하지 않았다면 acc를 ite..
📗함수형 프로그래밍을 위한 자바스크립트 기본기함수형 프로그래밍은 어떤 이론을 토대로 가능할까평가란 코드가 계산(Evaluation) 되어 값을 만드는 것 이다.일급이란 아래 4개의 조건을 충족할 수 있어야 한다.- 값으로 다룰 수 있다.- 변수에 담을 수 있다.- 함수의 인자로 사용될 수 있다.- 함수의 결과로 사용될 수 있다.함수는 일급이며 일급 함수라 부를 수 있다. 일급 함수는 조합성과 추상화의 도구가 된다자바스크립트는 함수를 값으로 평가하며, 함수 자체가 일급이기 때문에 함수의 인자로 받아서 실행하거나 함수를 반환할 수 있다. 이 특성은 함수를 값으로 다루는 함수인 고차 함수의 작동을 가능하게 하며 함수형 프로그래밍의 토대가 된다.const apply1 = f => f(1);const add2 ..
🤔에디터에서 스타일을 적용했지만 적용되지 않는다?에디터에서는 리스트, blockquotes, 이미지 정렬 등의 작업을 진행하고 저장을 했지만. 해당 html 코드를 보여줄때 저장한 버전과 다르게 나오는 문제가 있었다. 또한 작업할 디자인과 기본 스타일이 달라 기존 스타일 자체를 변경해줘야 하는 문제가 있었다. CKEditor 5를 통해 저장된 html 데이터에는 아래와 같이 blockquote태그로 잘 감싸져 있다. 데이터의 문제는 아니다. 따라서 문제 해결 방법으로, 기존 CKEditor 5 css 를 직접 수정하여 프로젝트에 적용하는 방법이 좋을 것 같아 해당 방법을 찾아봤다.💡content-style CSS 파일을 이용한 커스텀 CSS 적용법https://ckeditor.com/docs/cked..
18-1 일급 객체자바스크립트에서 아래와 같은 조건을 만족하는 객체를 일급 객체 라고한다.무명의 리터럴로 생성할 수 있다. 즉 런타임에 생성이 가능하다.변수나 자료구조에 저장할 수 있다.함수의 매개변수에 전달할 수 있다.함수의 반환값으로 사용할 수 있다.자바스크립트의 함수는 위 조건을 전부 만족하므로 일급 객체이다.// 1. 무명의 리터럴로 생성할 수 있다.// 2. 변수에 저장할 수 있다.// 런타임에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다.const increase = function (num) { return ++num;};const decrease = function (num) { return --num;};// 2. 함수는 객체에 저장할 수 있다.const auxs = ..
15-1 var 키워드로 선언한 변수의 문제점변수 중복 선언 허용var 키워드로 선언한 변수는 중복 선언이 가능하다.중복 선언시 에러도 발생하지 않아서 의도치 않게 먼저 선언된 변수 값이 변경되는 부작용이 발생한다.함수 레벨 스코프함수의 코드 블록만을 지역 스코프로 인정하기 때문에, 따라서 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역변수가 된다.함수 레벨 스코프는 전역 변수를 남발한 가능성을 높인다.변수 호이스팅변수 선언문 이전에 변수를 참조할 시 호이스팅이 되어 있기 때문에 참조가 가능하다. 이는 가독성을 떨어트리고 오류를 발생시킬 여지를 높인다.15-2 let 키워드변수 중복 선언 금지let 키워드로 이름이 같은 변수를 중복 선언하면 문법 에러가 발생한다.블록 레..