
252
8장 함수
let result
=
f.apply(this, args);
cache.set(key, result);
return result;
}
};
}
memoize()
함수는 캐시로 사용할 새 객체를 생성하고 이 객체를 로컬 변수에 할당
하므로, 반환된 함수 외에는 이 객체를 볼 수 없습니다. 반환된 함수는 인자 배열을
문자열로 변환하고 그 문자열을 캐시 객체의 프로퍼티 이름으로 사용합니다. 값이
캐시에 존재하면 바로 반환합니다. 그렇지 않다면 인자를 넘기면서 지정된 함수를
호출해 값을 계산하고 캐시에 저장한 다음 반환합니다.
memoize()
는 다음과 같이
사용할 수 있습니다.
//
유클리드
알고리즘을
사용해
두
정수의
최대
공약수
(GCD)
를
계산해
반환합니다
.
// http://en.wikipedia.org/wiki/Euclidean
_
algorithm
function gcd(a,b) { // a
와
b
의
타입
체크는
생략합니다
.
if (a < b) { // a
는
b
보다
크거나
같아야
합니다
.
[a, b]
=
[b, a]; //
그렇지
않다면
분해
할당을
통해
변수를
스왑합니다
.
}
while(b !
==
0) { //
최대
공약수를
구하는
유클리드
알고리즘입니다
.
[a, b]
=
[b, a%b];
}
return a;
}
const ...