ES6 함수 끝 조화 caller

752 단어 JS
function factorial(n, total=1) {
	if (factorial.caller !== factorial && arguments.length >1)
		throw new Error('only one param');
	if (n < 3) return n*total;
	return factorial(n - 1, n * total);
}

최근 에 ES6 를 공 부 했 는데 함수 꼬리 조정 이라는 새로운 특성 을 보 았 습 니 다. 함수 재 귀적 호출 에 정말 유용 합 니 다!우 리 는 재 귀적 호출 알고리즘 을 매우 간단하게 쓸 수 있다 는 것 을 알 고 있 지만 효율 이 높 지 않 지만, 만약 꼬리 조 를 사용 하면 효율 적 이다!위 는 계단 의 재 귀 미 조 이다.JS 가 단언 을 지지한다 면 더욱 간단 할 것 이다.
function factorial(n, total=1) {
	if (factorial.caller !== factorial)
		assert(arguments.length === 1, 'only one param');
	if (n < 3) return n*total;
	return factorial(n - 1, n * total);
}

메모: factorial. caler 는 arguments. caller 를 사용 할 수 없습니다.

좋은 웹페이지 즐겨찾기