Development/Javascript 2

[Javascript] 재귀 함수의 스택 오버플로우 문제

n!을 구하기 위한 factorial(n) 함수를 재귀 함수로 구현한 상황에서 n 값이 매우 클 때 발생할 수 있는 문제는? Factorial 함수 function factorial(n) { if (n === 1) { return 1; } return n * factorial(n-1); } factorial(4); // 4*3*2*1 => 24 [문제 1] 숫자 값이 너무 크면 표현할 수 있는 int의 범위를 넘어설 수 있다. 20! = 20×19×18×...×2×1 = 2,432,902,008,176,640,000 factorial(n)의 n이 20이 되어도 엄청 큰 수가 나온다. Number 타입은 배정밀도 64비트 이진 형식 IEEE 754 값(-(2^53 − 1)부터 2^53 − 1까지의 수)이다..

Javascript 함수 리팩토링 과정

본 포스팅은 javascript 함수를 정의할 때, 리팩토링하는 과정을 예제로 다루고 있습니다. 0. 요구사항 분석 요구사항 특정 날짜의 Date 객체를 인수로 받아 새로운 포맷("yyyy-mm-dd")으로 변경한다. 함수 예시 formatDate(new Date('2021/01/04')) 반환 "2021-01-04" 1. 요구사항을 만족하는 것이 가장 우선이다. 좋은 코드의 1순위는 요구사항을 모두 만족하는 코드입니다. '좋은 코드'라는 강박에 사로잡혀 기능 구현도 되지 않은 코드를 리팩토링하려는 것은 능숙한 개발자가 아닌 이상 개발 시간을 늦추기만 할 뿐입니다. 처음부터 잘 작성하려는 것보다는 일단 기능 구현을 완성한 후, 리팩토링을 진행하는 방향이 많은 개발자들로부터 권장되고 있습니다. functi..