Quiero entender por qué este código devuelve number :
(function f(f){ return typeof f(); })(function(){return 1;}); Primero, supongo que devolverá undefined ya que la función f se ejecuta antes de la última función, pero luego ejecuto el código con los registros de la consola y el resultado fue number . ¿A alguien le importaría explicar por qué este fue el resultado?
f dentro del cuerpo de la primera función se refiere al parámetro llamado f . Una versión equivalente sin el sombreado confuso sería:
(function f(g){ return typeof g(); })(function(){return 1;});Y una versión equivalente con el IIFE separado en una definición de función y una llamada:
function f(g) { return typeof g(); } f(function () { return 1; }); (Si no está claro por qué esto devuelve 'number' , debe revisar el concepto de funciones como valores antes de saltar a IIFE intencionalmente más complicados con sombreado que también hacen uso del concepto).