什么是javascript中的非法调用typeerror

时间:2013-10-18 16:54:57

标签: javascript

我有javascript代码,如果它在浏览器中运行会引发警报,但我不想在运行单元测试时发出警报。

我尝试通过行

来解决这个问题
if( allowAlerts === false ){
    alert = console.log;
}

但是当我运行

alert("This bad thing happened");

我回来了

TypeError: Illegal invocation

直接重新分配警报是一个kludgey解决方案,我可以通过其他方式轻松解决问题,但我以前从未遇到过非法调用错误,并希望有人能够解释它的含义。

1 个答案:

答案 0 :(得分:7)

console.log函数需要其调用上下文作为控制台。

使用

alert = console.log.bind(console);

或者如果你想与旧的IE兼容:

alert = function(){ console.log.apply(console, arguments) };