¿Por qué el valor devuelto no está definido cuando se ve bien justo antes de devolverlo cuando lo registro en la consola? Supongo que tiene algo que ver con el cierre, pero no lo entiendo. El código y los registros de la consola para dos llamadas de prueba diferentes se encuentran a continuación:
CÓDIGO:
function addTogether() { const [a, b] = arguments; console.log(`a: ${a} b: ${b}`); if (typeof a !== 'number') { return undefined; } if (b !== undefined){ if (typeof b !== 'number'){ return undefined; } else{ let sum = a+b; console.log("sum being returned =", sum) return sum; } } return ((b)=>{ addTogether(a,b); }) } console.log("returnVal =", addTogether(2,5)); console.log("returnVal =", addTogether(5)(7)); CONSOLE OUTPUT: a: 2 b: 5 sum being returned = 7 returnVal = 7 a: 5 b: undefined a: 5 b: 7 sum being returned = 12 returnVal = undefined