반응형 전체 글123 Function.prototype.apply() 2020. 10. 16. Infinity 전역 속성 2020. 10. 16. Object vs Map Map Map 객체는 key-value 쌍을 저장하며 각 쌍의 삽입 순서도 기억하는 collection이다. 어떤 값(객체, primitive value 포함)이라도 key와 value로 사용할 수 있다. Map 객체는 요소의 삽입 순서대로 엘리먼트(내부 값)를 순회한다. for(let key of map) 반복문은 각 순회에서 [key, value]로 이루어진 배열을 반환한다. **for(let key "in" map) 반복문은 사용할 수 없다. Object vs Map Map은 key의 타입으로 "모든 타입"을 사용할 수 있다는 점을 잘 활용해야 할 것 같다. new Map()으로 인스턴스를 생성하고, .set()을 이용해서 값(value)을 삽입한다. .get()을 이용해서 값(value)에 접근 .. 2020. 10. 15. 메모이제이션 Memoization 메모이제이션이란 프로그래밍을 할 때 반복되는 결과를 메모리에 저장해서 다음에 같은 결과가 나올 때 빨리 실행하는 코딩 기법을 말한다. 클로저를 사용해서 유지되는 저장공간을 이용해 함수를 반복적으로 수행할 때 함수 내부의 실행횟수를 줄일 수 있다. 메모이제이션을 사용해서 팩토리얼 함수 구현 let factorial = (function() { let save = {}; let fact = function(number) { if (number > 0) { let saved = save[number - 1] || fact(number - 1); let result = number * saved; save[number] = result; console.log(saved, result); return result.. 2020. 10. 14. 클로저를 이용한 피보나치 수열을 리턴하는 메서드 출력할 때 마다 피보나치수열을 차례로 리턴해야 함 클로저의 정의나 특징은 알고 있었으나, 문제에서 파라미터가 정의되지 않았다는 점과 function을 리턴해야 한다는 점이 초기 접근자체를 어렵게 했다. 내가 여태 배운것 중 가장 이해도가 낮다고 생각하는 고차함수의 개념을 이용해야하기 때문에 더 힘들었던 것 같다. 실마리는 검색에서 찾았다. 클로저를 이용해서 함수를 리턴하며 실행하는 방법과 클로저 함수(내부함수)를 이용할 때 내부함수엔 얼마든 파라미터를 써도 된다는 점을 알게되자 조금씩 생각의 가닥이 잡히는 느낌이었다. 우선 몇번 풀어봤던 피보나치 수열의 값을 리턴하는 클로저 함수를 작성했다. let fibo = function(n){ if(n 2020. 10. 12. TIL 1011 복리계산 거듭제곱 아스키코드 repeat() 빈 배열, 객체의 타입 객체의 메서드 정의 배열에서 가장 긴 문자열 연이율을 알 때 복리계산 내코드 function interest(interestRate) { /* 원금*이자율/100 > 2 될 때 까지 year를 카운트 */ let year=1; while(true){ if((1+(interestRate/100))**year >= 2){ return year; } year++; } } 복리로 증가하는 원금 일반식 ( 원금 + (연이율 / 100) )^year(연수) 원금을 1로 두고 원금이 2배 이상되는 시점까지 걸리는 연수를 카운트했다. 참고 : www.mathsisfun.com/money/compound-interest.html 다른방법 function computeWhenDouble(interestRate) { let rate = 1 + interestRate .. 2020. 10. 12. TIL 1010 arr.slice() VS str.slice() arr.slice(begin, end) vs str.slice(begin, end) 전체적으로 동일한 동작이다. 문자열을 다룰 때 배열처럼 사용하기 때문인듯. 인자를 입력하지 않으면 배열(문자열) 전체를 얕은복사해서 리턴. 음수가 인자로 들어오면 배열(문자열)의 끝에서부터의 길이를 나타냅니다. ex) arr.slice(-2)하면 배열 마지막 두개의 요소를 리턴 ex) str.slice(-2)하면 문자열 마지막 두글자를 문자열로 리턴 arr[begin]부터 arr[end-1]까지의 요소를 가진 새로운 배열 리턴 end가 없으면 arr[begin]부터 arr[length-1]까지 str[begin]부터 str[end-1]까지의 문자를 가진 새로운 문자열 리턴 end가 없으면 str[begin]부터 str[l.. 2020. 10. 12. TIL 1009 소수구하기 null 과 undefined 구분 소수구하기 내 풀이 function prime(num){ let count=0; for(let i=1;i 2020. 10. 12. .appendChild()가 DOM 노드를 "이동"시키는 이유 위와 같은 코드를 수행했을 때 많은 사람들이 span요소가 div.b로 "복사"된다고 예상한다. 하지만 결과는 다르다 트리의 정의에서 이렇게 설명한다. 트리구조에 포함되어있는 객체(object)는 null이거나 object거나 자식을 갖는 "하나"의 부모를 가진다. 모든 노드는 루트 노드(최상위 노드)를 제외하곤 모두 "단 하나"의 상위 연결(하나의 부모)을 가진다는 것이다. 결론적으로 노드를 원래 부모에서 다른 부모쪽으로 이동시키고 싶다면, 트리 구조상 노드는 두개의 부모를 가질 수 없기 때문에 먼저 원래 부모에서 제거된 후, 새로운 부모에게 이동되어야 한다. 출처 : indepth.dev/here-is-why-appendchild-moves-a-dom-node-between-parents/ 2020. 10. 9. 이전 1 ··· 7 8 9 10 11 12 13 14 다음 반응형