제6장 귀속
6.1 자체 흡수 함수(자신의 함수를 호출)
역사적으로 볼 때, 귀속과 함수식 프로그래밍은 말하지 않을 수 없는 연원을 가지고 있다. 또는, 그것들은 항상 함께 소개된다.그러나 우리는 이해귀환이 주어와 함수식 프로그래밍을 이해하는 데 세 가지 이유가 있다고 말한다.
다음 설명과 차이점을 살펴보겠습니다.
예를 들어 myLength가 배열을 받아서 그 길이를 되돌려 주는 함수를 고려한다면, 함수의 설명은 다음과 같다.
그러면 돌아가는 사고방식이 어떤지 살펴보자.
즉,
function myLength(array) {
if(_.isEmpty(array)) return 0;
return 1 + myLength(_.rest(array))
}
우리는 여기에서 그 두 가지lodash의 방법을 고려하지 않는다. 우리는 그 사고방식이 어떤지 이해해야 한다. 물론, 만약 당신이 우리가array를 직접 사용한다고 말한다면.length, 그럼 나도 할 말이 없어.이어서 우리는 이러한 상황을 고려하여 함수 zip을 실현하고 출력의 결과는 다음과 같다.
zip(['a', 'b', 'c'], [1, 2, 3]) ==> [ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]
일반적으로lodash의 원본 코드를 보면 다음과 같은 함수를 쓴다.
function zip(array1, array2) {
const length1 = array1.length;
const length2 = array2.length;
if(length1 !== length2) return;
const result = [];
let i = -1;
while (++i < length1) {
result[i] = [array1[i], array2[i]];
}
return result;
}
우리의 일반적인 사고방식은 순환을 이용하여 그것을 처리하는 것이다. 그러면 지금 우리는 귀속을 사용해야 합니까?
분명히 귀환은 이런 수를 조작하는 데 쓰이는 것이 아니다.
계승 기억나세요?즉
0! = 1,2! = 1 * 2,n! = 1 * 2 * 3 * ··· * n
귀속은 이렇게 쓰인다.function fact(n) {
return n <= 0 ? 1 : n * fact(n - 1);
}
fact(5); // 120
눈치챘어?귀환의 사용 장면은 함수 자체를 호출해서 출력을 할 수 있을 때 귀환을 사용해야 한다.
주의: 귀속을 사용할 때 정지 조건을 반드시 설정해야 합니다. 그렇지 않으면 창고가 넘칠 수 있습니다.
여기에 또 하나의 개념인 미귀속을 언급한다.
꼬리 귀속은 모든 원소를 귀속 호출할 때 이 함수의 마지막 동작이 귀속 호출이면 꼬리 귀속이라고 부른다.
흥미가 있으면 스스로 조회해 보세요.
귀속은 대상과 그룹에 자주 사용되는데, 이것은lodash에서 나타난다.
Github
그러나 우리는 귀속을 밑바닥 조작으로 더 많이 볼 것이다.즉, 더 좋은 방법이 없을 때 귀속 사용량을 줄여야 한다. 자바스크립트 엔진 최적화 문제도, 창고가 넘쳐나는 문제도, 이해가 쉽지 않기 때문이다.
총결산
이 절은 귀속, 즉 함수가 간접적으로 또는 직접적으로 자신을 호출하는 것을 말한다.
자동 귀속 호출은 삽입된 데이터 구조를 검색하고 처리하는 강력한 도구이지만, 이 말은 귀속을 조심스럽게 사용한다. 왜냐하면 귀속은 때때로 고급 함수가 그렇게 직접적으로 오지 않기 때문이다.
현재 우리의 보편적인 인식은 여전히 함수 조합을 사용하고 필요할 때만 귀속이라는 기술 조작을 사용한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.