Consideremos que tengo la siguiente llamada de función,
function add(){ x = 0 ; for(i = 0 i < ##; i++){ // need to run a loop four times x+=1 } }Consideremos que estoy tratando de implementar la función que agregará uno en cada llamada posterior, como a continuación
console.log(add()()().getValue()); // 3 console.log(add().getValue()); // 1 console.log(add()().getValue()); // 2Una llamada para add debe devolver una función que también tenga un método getValue , y cada llamada a esa función debe devolver lo mismo. Asi que:
function add() { var x = 1; function inner() { x += 1; return inner; } inner.getValue = function () { return x; } return inner; } console.log(add()()().getValue()); // 3 console.log(add().getValue()); // 1 console.log(add()().getValue()); // 2Supongo que esperaban que usaras toString(), que no es la mejor manera de hacerlo.
function add(x = 0) { function next() { return add(x+1); } next.toString = function () { return x; }; return next; } console.log("example 1", add()()()()); console.log("example 2", add()()()()()()()()());Creo que estás tratando de emular el comportamiento de las funciones del generador. Aquí hay un fragmento que ilustra una forma en que podría hacerlo con un generador.
function* adder() { let x = 0; while (true) { yield x + 1; x++; } } const add = adder(); const firstValue = add.next(); const secondValue = add.next(); const thirdValue = add.next().value;