Espero que este código imprima undefined , pero imprime la function en su lugar. puede alguien decirme por que? Soy nuevo en JS.
function createGreeter(greeting){ function greet(){ console.log(greeting,name) } return greet } let g1=createGreeter('Good Morning') console.log(typeof g1) let g2=createGreeter('Good Evening')Entonces, parece que desea crear una función que acepte un saludo pero devuelva otra función que acepte un nombre (mientras mantiene un puntero a la variable (saludo) en su entorno léxico externo cuando se devuelve) y devuelve el resultado de unir esos cuerdas cuando se llama.
// `createGreeter` accepts a string and // returns a new function that accepts a name // and when that function is called ties both strings together function createGreeter(greeting) { return function (name) { return `${greeting}, ${name}.`; } } // Both of these return a function that accepts a name const goodevening = createGreeter('Good evening'); const expectingyou = createGreeter('I\'ve been expecting you'); // And now we just need to call those functions with the name console.log(goodevening('Blofeld')); console.log(expectingyou('Mr. Bond'));Estás regresando dentro de la función greet la función misma
Si desea almacenar en una var el resultado de la función de saludo, debe llamarlo:
En lugar de return greet , debe return greet()
El código dice return greet en la línea 5. El valor de greet es la función greet en sí misma. Es posible que desee cambiar la línea 5 para return greet() , que ejecutaría la función greet() y luego devolvería el valor de retorno de greet() , que en sí mismo no está undefined .