TIL 7週目callback復習
1223 ワード
Closerの復習
コールバック関数
内部関数は1回のみ呼び出されます
.onceはcallback関数を一度だけ呼び出す「関数」を返します.
.onceは戻ってきた関数を複数回呼び出しますが、callback関数は複数回呼び出されません.
let _.once = function (func) {
let result = [];
// callback함수를 단 한번만 실행시키기 위함
return function (...arg) {
if (result.length === 1) {
return result[0];
}
result.push(func(...arg));
return result[0];
};
};
// add에는 내부함수가 할당된다.
const add = _.once((x, y, z) => {
return x + y + z;
});
// 할당된 내부함수를 실행된다
add(1, 2, 3) // 6
add(4, 5, 6) // 6
add(7, 8, 9) // 6
reduce実施
_.reduce = function (arr, iteratee, initVal) {
let acc, newArr;
if (initVal !== undefined) {
acc = initVal;
} else {
acc = arr[0];
newArr = _.slice(arr, 1);
}
_.each(initVal !== undefined ? arr : newArr, function (value, i, arr) {
acc = iteratee(acc, value, i, arr);
});
return acc;
};
// 리펙토링
_.reduce = function (arr, iteratee, initVal) {
_.each(arr, function (el, i, arr) {
if (initVal === undefined) {
initVal = el;
} else {
initVal = iteratee(initVal, el, i, arr);
}
});
return initVal;
};
Reference
この問題について(TIL 7週目callback復習), 我々は、より多くの情報をここで見つけました https://velog.io/@ellie12/TIL-7주차-1.-callback-복습テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol