newFun
関数は、呼び出しごとに渡された関数を2回呼び出します。変数を使用して、関数呼び出しをカウントする必要があります。
次の関数は、関数呼び出しの回数をチェックし、関数が2回呼び出されたときに0
を返します。 JavaScriptで
function twice(func, exceededReturnValue) {
// the following variable is local to the `twice` function
var called = 0;
// return a function that *remembers* the declared variable
return function() {
if (called == 2) {
console.warn('the function has already been called twice');
return exceededReturnValue;
}
called++;
return func();
}
}
var allReturns = twice(function() {
return 4
}, 0);
「関数関数を返すを[することを」閉鎖呼ばれます。渡された関数は、あなたの代わりに呼び出し演算子の.apply
メソッドを使用することができ、引数を受け入れる必要がある場合には
は:
return func.apply(null, arguments);
// ...
var allReturns = twice(function(foo) {
return 4 * (foo || 1);
}, 0);
// allReturns(8) + allReturns(3);
最初の段落の最後の文は終了していません:) – Aaron