执行传递函数时非法调用

时间:2013-11-24 12:43:45

标签: javascript

我将函数传递给其他函数。向本机传递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

1 个答案:

答案 0 :(得分:1)

传递它时,需要将log函数绑定到console对象。 否则,this值将在内部指向window,这将导致非法调用。

var functionToUse = console.log.bind(console);

这也会导致非法调用:

console.log.call(window);