この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - JavaScript コーディング問題
46. `_.once()`を実装する
function once(func) {
let result;
let called = false;
return function (...args) {
if (!called) {
called = true;
result = func.apply(this, args);
}
return result;
};
}
まず、once()
関数は引数として関数func
を受け取ります。
内部で、結果をキャッシュするためにlet result
とlet called = false
の2つの変数を宣言します。
そして、実際にキャッシュ処理を行う無名関数を戻します。
この無名関数は、最初に呼び出された場合にcalled
をtrue
にし、func
を呼び出します。
結果はresult
に保存され、2回目以降に呼び出された場合には、キャッシュされたresult
が返されます。
この方法で、「最多1回の呼び出し制限」の実装が完了します。