2016-10-18 2 views
-3

숫자 n과 함수 f를 취하여 함수 g를 반환하는 함수를 작성하십시오.JS 코드로 해결할 수 없음

g()를 호출하면 f()를 최대 n 회 호출합니다.

ex. 아래

function log() { 
    console.log('called log'); 
} 
var onlyLog = only(3, log); 
onlyLog(); -> outputs 'called log' to console 
onlyLog(); -> outputs 'called log' to console 
onlyLog(); -> outputs 'called log' to console 
onlyLog(); -> does nothing 
onlyLog(); -> does nothing 

MY CODE :

toolbox.only = function(n, f) { 
    for (var i = 0; i <= n; i++) { 
    var called = false; 
    return function() { 
     if (!called) { 
     f(); 
     called = true; 
     } 
    } 
    } 
} 

내 코드는 다음 시험을 통과하지 않습니다 : 전용 전화 (3, F) 3 회 이상()는 3 번 F를 호출해야합니다.

도움을 주시면 감사하겠습니다.

다음이 시도 내가 당신을 통해 문제를 생각하고 생각

+2

음, 우선, '루프 내에서 return'ing하는 것을 종료 할 것 즉시 루프. 따라서 루프는 본질적으로 한 번만 실행됩니다. –

+0

기본 사항부터 살펴 보겠습니다. 정말로 for 루프가 필요하다고 생각하십니까? 몇 번이나 여러 번 반복하고 있습니까? 왜 귀하의 코드는 한 번의 통화에서만 작동한다고 생각합니까? –

+0

Oo, 나는 functionf를 n 번 호출하고 싶다고 생각했지만, 나는 그것을 잘못 읽었습니다. 내 루프가 루프를 돌리지 않는 이유를 알 수 있습니다. 나는 그것을 전혀 지적하지 않았다. 그것을 지적 해 주셔서 감사합니다. 내가 f 개의 함수를 n 번 출력하고 싶다면 그 코드가 어떻게 생겼는지 궁금하다. 왜냐하면 내가 풀려고했던 것이기 때문에 (왜냐하면 나는 그 질문을 잘못 읽었 기 때문이다) – Alex

답변

1

.. ..

// Write a function that takes a number n and a function f, and returns a function g. 
 
// When you call g() it calls f() at most n times. 
 

 
// ex. 
 
// function log() { 
 
// console.log('called log'); 
 
// } 
 
// var onlyLog = only(3, log); 
 
// onlyLog(); -> outputs 'called log' to console 
 
// onlyLog(); -> outputs 'called log' to console 
 
// onlyLog(); -> outputs 'called log' to console 
 
// onlyLog(); -> does nothing 
 
// onlyLog(); -> does nothing 
 

 
var only = function(n, f) { 
 
    return function() { 
 
    if (n) { 
 
     n --; 
 
     f(); 
 
    } 
 
    } 
 
} 
 

 
function log() { 
 
    console.log('called log'); 
 
} 
 
var onlyLog = only(3, log); 
 
onlyLog();// -> outputs 'called log' to console 
 
onlyLog();// -> outputs 'called log' to console 
 
onlyLog();// -> outputs 'called log' to console 
 
onlyLog();// -> does nothing 
 
onlyLog();// -> does nothing

관련 문제