w3schools funciones example es6 javascript lambda functional-programming invocation

example - funciones javascript



Unkeught TypeError: invocación ilegal en javascript (2)

Estoy creando una función lambda que ejecuta una segunda función con un parametro concreto. Este código funciona en Firefox pero no en Chrome, su inspector muestra un error extraño, Uncaught TypeError: Illegal invocation . ¿Qué pasa con mi código?

var make = function(callback,params){ callback(params); } make(console.log,''it will be accepted!'');


La función de registro de la consola espera que this refiera a la consola (internamente). Considere este código que replica su problema:

var x = {}; x.func = function(){ if(this !== x){ throw new TypeError(''Illegal invocation''); } console.log(''Hi!''); }; // Works! x.func(); var y = x.func; // Throws error y();

Aquí hay un ejemplo (tonto) que funcionará, ya que vincula this a la console en su función make:

var make = function(callback,params){ callback.call(console, params); } make(console.log,''it will be accepted!'');

Esto también funcionará

var make = function(callback,params){ callback(params); } make(console.log.bind(console),''it will be accepted!'');


Puede ajustar la función que necesita ''esto'' a una nueva función lambda, y luego usarla para su función de devolución de llamada.

function make(callback, params) { callback(params); } make(function(str){ console.log(str); }, ''it will be accepted!'');