3

ブラウザーで実行されている場合にアラートを発生させる JavaScript コードがありますが、単体テストを実行するときにアラートを発生させたくありません。

私は行を持つことでこれを解決しようとしました

if( allowAlerts === false ){
    alert = console.log;
}

しかし、次に実行すると

alert("This bad thing happened");

私は戻ってきます

TypeError: Illegal invocation

アラートを直接再割り当てするのは面倒な解決策であり、他の方法で問題を簡単に解決できますが、これまで違法な呼び出しエラーに遭遇したことがなく、誰かがそれが何を意味するのか説明できることを望んでいました.

4

1 に答える 1

9

console.log関数の呼び出しコンテキストがコンソールである必要があります。

使用する

alert = console.log.bind(console);

または、古い IE と互換性を持たせたい場合:

alert = function(){ console.log.apply(console, arguments) };
于 2013-10-18T16:56:27.913 に答える