Sebastián Hernández
EstudianteCristian Rodriguez Morales
EstudianteMelisa Ahumada
EstudianteJuan Camilo Moreno
EstudianteBrandon James Huamán Mallcco
EstudianteMilagro García
EstudianteUriel Solis Salinas
EstudianteJavier Marin Ayza
Estudianteandres gonzalez
EstudianteMiguel Sosa
EstudianteNestor Rios Garcia
EstudianteRicardo Alfonso Chavez Vilcapoma
EstudianteBrahyan Antonio Martinez Madera
EstudianteJulian David Alzate Cuervo
EstudianteNestor Rios Garcia
EstudianteMauricio Poveda Macias
EstudianteLEONARD CUENCA
EstudianteEder Raúl Abarca Raviela
EstudianteVictor Becerra Cordoba
EstudianteEder Raúl Abarca Raviela
EstudianteFernando Xavier Beizaga Reyes
EstudianteVíctor Julián González Estrada
EstudianteCesar Perez
EstudianteYosber Emmanuel Guerrero Colmenares
EstudiantePlatzi Team
EstudianteAlejandro Naranjo
EstudianteGabriel Diego Cejas
EstudianteLucas Frezzini
EstudianteAgustin Cammarota Muti
EstudianteEdinson Parra Bahos
EstudianteAbelino Suarez
EstudiantePablo Andres Fernandez Cari
Estudiantegiovany osorio
EstudianteLaura Garrido
EstudianteSantiago Perozo
EstudianteOlga Lucia Moreno Rojas
EstudianteMichael Merchan
EstudianteSí sí, muy lindo el ejercicio pero en la clase pasada de clousure ni siquiera se explicó que las funciones podrían tener un segundo parametro que iría a una función interna, tuve que ver los ejercicios de los demás para comprender. Definitivamente no creo ser el único que piense que NO está suficientemente explicado y que lo que llevamos hasta este punto no tiene la relación necesaria para que nosotros entendamos como solucionar el ejercicio satisfactoriamente.
export function sumWithClosure(firstNum = 0) { return function (secondNum = 0) { return firstNum + secondNum } }
y gracias a eso nunca lo olvidaras. Me estaba quedando dormido, no soy 100% nuevo en js pero no soy un experto y esto me hizo despertar y me dio mas inter;es
Pienso igual, estaba mirando los resumenes de las clases y tampoco habia ejercicios parecidos, frustra un poco porque da la falsa sensación de que no se aprende nada
Esta interacción con las clases es lo Mejor que pudo haber inventado Platzi 💚💚💚
siiiiiiiii, me gustan este tipo de ejercicios después de una clase
No lo inventó, simplemente lo implementó porque hay otras páginas que usan este sistema de aprendizaje y ha dado muy buenos resultados.
Posiblemente este de más la declaración de variables, pero es para que lo comprenda mejor 😁
function sumWithClosure(firstNum) { let a = firstNum; return function (secondNum) { let b = secondNum; if (!b) { return a; } else{ return a + b; } } }
Gracias a la declaración de variables me aclaraste como funciona esto, que con lo del segundo parámetro me perdí un poco. Gracias Uriel.
Gracias por compartir me ayudaste mucho!
Muy bueno el manejo de ejercicios, no lo había visto en ningún otro curso hasta ahora :) Esta es mi solución
export function sumWithClosure(firstNum) { return function (secNum) { return firstNum + (secNum ?? 0); } } sumWithClosure(2)(3);
Te quedo genial, yo lo hice parecido
function sumWithClosure(firstNum) { function sum(secondNum = 0) { return firstNum + secondNum } return sum } sumWithClosure(2)(3); sumWithClosure(90)();
¿La doble ? que significa amigo?...nunca la había visto
Javascript es pro, o yo soy pro XDDD
export function sumWithClosure(firstNum) { return (secondNum = 0 ) => firstNum + secondNum }
muy buena solución
Ambas, me sorprende la diversidad de soluciones para un solo problema.
export function sumWithClosure(firstNum) { function anidado(secondNum) { if (secondNum) { return secondNum + firstNum; } return firstNum; } return anidado; }
super bien vale Platzi Evolucionando
Mi solución:
export function sumWithClosure(firstNum) { return function (secondNum = 0) { return firstNum + secondNum; } }
¿Porque inicialializas a 0 la variable secondNum?
No es inicialización, es el valor default si no lo proporcionas su valor sería de cero.
Aquí la solución en una sola línea de código para los más experimentados.
export const sumWithClosure = (firstNum) => (secN = 0) => firstNum + secN
de primer nivel.
buena!
Comparto la opinión de mis compañeros, este es el primer ejercicio que me enfrento en un curso de Platzi que está tan confuso que es imposible de resolver si no tienes una idea más clara de lo que estamos hablando. Entiendo que es necesario siempre consultar otras fuentes para consolidar el conocimiento y entender los temas, pero diría que lo que llevamos de curso no es necesario para resolver esto, al menos NO de manera clara.
Estoy de acuerdo con los comentarios de que no se cubrio el tema de los dobles parentesis, o como lo encontré en algunos foros "function currying". Leyendo los comentarios intenté con los scripts que aportaron y no me funcionaron, pero revisé un par de anotaciones y trate de resolverlo basandome con lo que aprendí en el curso de ECMAScript 6. Espero les sirva mi script:
export function sumWithClosure(firstNum) { return function mySuma(secondNum) { let a = firstNum ?? 0; let b = secondNum ?? 0; return a + b; } }
No lo logro entender cómo funciona el playground. Cuando corro mi solución dentro de la consola del navegador, funciona para lo solicitado en el ejercicio.
function sumWithClosure(firstNumber, secondNumber) { if (typeof firstNumber !== "number") { console.log("Please use numbers within the argument"); } else { let a = firstNumber; function adding() { if (typeof secondNumber === "number") { let b = secondNumber; result = a + b; } else { result = a; } return result } return adding(); } } // Evaluating how the function works with different kind of values: sumWithClosure(2,3) sumWithClosure(90) sumWithClosure("asdasd") sumWithClosure(true) sumWithClosure(1, "3")
Mi solución:
export function sumWithClosure(firstNum) { let num = firstNum return function (secondNum) { let num2 = secondNum return num2 ? num + num2 : num } }
Buenas, como estás? No es necesesario declarar nuevas variables para usar los parametros.
Dentro del entorno lexico de la funcion, cuando no encuentra una variable con ese nombre, buscá si esta el parametro con ese nombre, y luego a su entorno lexico padre y así hasta llegar arriba de todo.
Y para evitar la condicion del segundo numero, podes dejar el parametro con el valor 0 por defecto.
export function sumWithClosure(firstNum) { return function (secondNum = 0) { return firstNum + secondNum } }
Otra forma para evitar el if:
function sumWithClosure(firstNum) { return function sum(secondNum = 0) { return firstNum + secondNum; } }
Realmente no entiendo esta pizarra de ejecución
no estoy seguro si solo soy yo pero en esta clase me aparece ese error desde navegador chrome y desde edge
Pudiste solucionarlo? Me pasa lo mismo
pudieron solucionarlo?
Estas son las soluciones que pude hacer y entendí muy bien espero a ustedes les ayude, me parecieron muy sencillas
// solucion 1 function sumWithClosure(firstNum) { function second(secondNum = 0) { return firstNum + secondNum } return second } //solucion 2 function sumWithClosure(firstNum) { return function sum(secondNum = 0) { return firstNum + secondNum } }
export function sumWithClosure(firstNum) { return function sumWithClosure2(secondNum) { if (secondNum === undefined) { return firstNum; } else { return firstNum + secondNum } } } ```Quizá si recien estas adentrandote en estos temas de closures, scopes, ambito lexico, etc, te encontraste con la duda de porque la funcion pedía dos argumentos por separado de esta manera `sumWithClosure(2)(3);`, esto no se ha dicho en el curso aun, pero esa practica se llama currying, y consiste en la idea de que una función tome un argumento y devuelva otra función que también toma un argumento, el segundo argumento se refiere a la función anidada que devuelve la función principal. Es útil aplicarlo en situaciones donde deseas configurar una función con algunos valores iniciales y luego aplicarla a otros valores más adelante. Es una técnica poderosa para crear funciones más expresivas y reutilizables.
Me parece más entendible y práctico hacerlo con arrow functions.
const sumWithClosure = (firstNumber) => (secondNumber) => { if(secondNumber) { return firstNumber + secondNumber; } return firstNumber; } sumWithClosure()();
Les comparto mi solución:
export const sumWithClosure = (firstNum) => (secondNum) => ((firstNum || 0) + (secondNum || 0))
Podemos observar dos arrow functions anidadas con return implicito, la primer arrow function retorna una segunda función y la segunda función retorna la suma de los dos parametros validando de que existan caso contrario tome el valor de 0 .