我将函数传递给其他函数。向本机传递Uncaught TypeError: Illegal invocation
函数时返回console.log
。为什么?
var functionToUse = console.log,
parameterToUse = 'Hello World!';
function execute(logic, parameter) {
if (parameter) {
logic(parameter);
} else if (!parameter) {
logic();
}
}
execute(function () { alert(1) }, false); // works fine
execute(functionToUse, parameterToUse); // Uncaught TypeError: Illegal invocation
答案 0 :(得分:1)
传递它时,需要将log
函数绑定到console
对象。
否则,this
值将在内部指向window
,这将导致非法调用。
var functionToUse = console.log.bind(console);
这也会导致非法调用:
console.log.call(window);