Cómo lograr la siguiente lógica en JS
Ejemplo:
Let y = alertMyPreviousParam(“1”); Let z= y('2') // show output as 1 Let a = z('3') // show output as 2 Let b = a('ra') // show output as 3 Let c = b('z') // show output as 'ra',A pesar de varios Syntax error
1) la cadena encerrada por ' y ' no es una cadena javascript válida, de manera similar con “ y ” . Utilice " o ' .
2) la variable debe declararse con let not Let .
SOLUCIÓN
Puede aprovechar el closure y Higher order function(HOF) aquí
function alertMyPreviousParam(arg) { let last = arg; return function (curr) { console.log(last); last = curr; return alertMyPreviousParam(curr); }; } let y = alertMyPreviousParam("1"); let z = y("2"); // show output as 1 let a = z("3"); // show output as 2 let b = a("ra"); // show output as 3 let c = b("z"); // show output as 'ra',Querrás investigar los cierres. Aquí hay un ejemplo:
let var = null let next = null const myFunc = (newnext) => { var = next next = newnext return var }Perdón por el formato, estoy en el móvil
la función alertMyPreviousParam, devuelve una nueva función y genera la entrada anterior. Esto se puede lograr de la siguiente manera:
let alertMyPreviousParam = (x) => (y) => { console.log(x); return alertMyPreviousParam(y); }