w3schools script learn guide javascript recursion tail-recursion

javascript - learn - script java



FunciĆ³n de cola en javascript (2)

Puedes usar el .valueOf para hacer el truco:

function myfunction(sum){ var accum = function(val) { sum += val; return accum; }; accum.valueOf = function() { return sum; }; return accum(0); }; var total = myfunction(1)(2)(3)(4); console.log(total); // 10

JSFiddle: http://jsfiddle.net/vdkwhxrL/

Cómo funciona:

en cada iteración, devuelve una referencia a la función del acumulador. Pero cuando solicita el resultado, se invoca .valueOf() , que en su lugar devuelve un valor escalar.

Tenga en cuenta que el resultado sigue siendo una función. Lo más importante es que no se copia en la tarea:

var copy = total var trueCopy = +total // explicit conversion to number console.log(copy) // 10 ; so far so good console.log(typeof copy) // function console.log(trueCopy) // 10 console.log(typeof trueCopy) // number console.log(total(5)) // 15 console.log(copy) // 15 too! console.log(trueCopy) // 10

Esta pregunta ya tiene una respuesta aquí:

Quiero hacer una función que agregue argumentos. Invocando esta función debería ser

functionAdd(2)(3)(4)...(n);

Y el resultado 2 + 3 + 4 ... + n Estoy intentando esto

function myfunction(num){ var summ =+ num; if(num !== undefined){ return myfunction(summ); } };

Pero no funciona, un error de ovwerflow. Y no entiendo dónde debería salir de esta función;


Si la última llamada puede ser sin argumentos:

function add(value) { var sum = value; return function add(value) { if(typeof value === ''number'') { sum += value return add } else { return sum } } } console.log(add(1)(2)(3)(0)()) // 6