1

JavaScript のエラー レポートを取得するために Hoptoad を使用していますが、最近、次のエラーが発生しました。

var console の再宣言

バックトレースはあまり役に立ちません:

internal: :

:0:in `{anonymous}()'

「Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.16) Gecko/20110323 Ubuntu/10.10 (maverick) Firefox/3.6.16」で発生したことは知っていますが、わかりませんコンソールが再宣言される方法。あなたはなにか考えはありますか?コンソールを宣言する方法は次のとおりです。

if (typeof console == "undefined") {
  var console = {
    log: function() {
    }
  };
}
4

1 に答える 1

4

変数を条件付きで宣言することはできません。コードが実行される前に、宣言が解析され、アクティブ化オブジェクトのプロパティとして追加されます。あなたのコードは以下と同等です:

var console;
if (typeof console == "undefined") {
  console = {
    log: function() {
    }
  };
}

これは、宣言が関数の先頭または他のコードの上に効果的に「巻き上げられる」ため、「巻き上げ」とも呼ばれます (私が好きな用語ではありません)。

同じ関数またはスコープで変数を複数回宣言しても問題はありませんが、スコープの誤解 (たとえば、ブロック スコープを期待する) や識別子の意図しない再利用の可能性を示しています。

これを編集して、この部分を確認または拒否してください:

これを行う方法は、window.console を再定義することです。

if (typeof window.console == "undefined") {
  window.console = {
    log: function() {
    }
  };
}
于 2011-04-21T06:25:42.790 に答える