728x90
728x90
선언적 프로그래밍은 코드를 작성할 때 "무엇(What)"을 달성하고자 하는지에 초점을 둔다. 어떻게(How) 달성할지에 대한 구체적인 단계를 명시하지 않고, 원하는 결과를 명확하게 묘사하는 방식으로 코드를 작성한다. 선언형으로 작성된 코드는 추상화로 문제를 해결하기에, 재사용성이 높고 사용할때 간결하여 가독성이 높다. 각각의 기능을 따로 구현하게 되기 때문에 각 기능의 모듈간 종속성이 낮아져 독립적으로 관리 및 사용이 가능하다. 위와 같은 이유들로, 선언적 프로그래밍은 유지보수가 적합한 코드들을 작성할 수 있게 해준다. React는 선언형 UI 라이브러리로, 선언형 뷰는 코드를 예측 가능하고 디버그하기 쉽게 만들어 준다고 한다. 자바스크립트를 이용해 선언적으로 작성한 배열의 모든 값 더하는 코드 cons..
이번 문제는 객체를 값으로 가지는 두 배열을 합치는 문제였다. 객체의 id값은 유일해야 하고 양 배열에 id가 같으면, 이 객체를 합해야 하는 문제였다. 문제 접근 자체는 어렵지 않았지만, Time Limit Exceeded을 맞이해버렸다. /** * @param {Array} arr1 * @param {Array} arr2 * @return {Array} */ var join = function(arr1, arr2) { const answer = [...arr1]; const memo = {} for(let el of arr2) { if(el.id >= 0) { let pointer = null; if(memo[el.id] >= 0) { pointer = memo[el.id]; } else { for(..
자바스크립트에서 때때로 메모리 누수가 발생하는 경우가 있다. 가비지 컬렉터가 파악하지 못해 할당된 메모리가 해제되지 못할 수 있다. 이런 경우, 메모리 누수가 누적이 되면 성능저하와 심할경우 프로세스가 중단될 수도 있다. 메모리 누수가 발생하는 경우를 알고 이를 피하는 것이 좋은 자바스크립트 개발자이므로, 어떤 경우 메모리 누수가 발생하는지 알아보았다. 전역 변수의 사용 function fn() { leak = "Global Variable Memory Leak"; } 위와 같은 전역 변수는 프로세스가 종료될 때 까지 메모리에 존재하므로, 사용하지 않는 전역 변수는 메모리 누수의 원인이 될 수 있다. 이벤트 리스너를 해제하지 않음 function EventListnerLeak() { const btn =..
이번 문제는 Array의 prototype에 고차 함수를 직접 구현하는 문제였다. this가 호출한 배열을 가르킨다는 것을 이번 문제를 해결하면서 처음 알게되어 의미가 깊다. /** * @param {number} rowsCount * @param {number} colsCount * @return {Array} */ Array.prototype.snail = function(rowsCount, colsCount) { if(rowsCount * colsCount !== this.length) { return []; } const result = []; for(let i = 0; i < rowsCount; i++) { result.push([]); } let row = 0; let isAscending =..
브라우저에 데이터를 저장하는 방법으로 localStorage와 sessionStorage 두 방법이 있다. 두 저장소의 차이점으로는, 둘 다 새로고침을 해도 브라우저에 데이터가 남는다. 다만, 창을 닫으면 session storage는 데이터가 사라지는 반면 local storage는 창을 닫아도 브라우저에 여전히 데이터가 남아있는 특징이 있다. localStorage는 브라우저 전체에서 공유되는 반면, sessionStorage는 같은 브러우저 탭 내부에서만 데이터가 공유된다. 기본적인 사용법은 두 스토리지 모두 같다. sessionStorage.setItem("key1", 123); const value = sessionStorage.getItem("key1"); console.log(value); ..