2

エラーが発生します

TypeError: Cannot call method 'call' of null

クロムで。コンソールを開いて、キャッチされていない例外をキャッチするように設定し、ページをリロードすると、次の行で停止します (縮小 -> 整形コード):

return this instanceof Q && (b = null != (d = this.getO()) ? d.id : void 0, 0 <= L.call(null != (f = null != c ? "function" === typeof c.get ? c.get("foo") : void 0 : void 0) ? f : [], b))

その行の の唯一のインスタンスcallは atL.call(...)です。を見ると、 inScope Variablesのインスタンスがありません。では、次のように表示されます。LLocalClosure

L: function indexOf() { [native code] }
  arguments: null
  caller: null
  length: 1
  name: "indexOf"
  __proto__: function Empty() {}

さすがに定義済みで関数です。を検査すると、方法が__proto__明らかになります。call

さらに、コンソールには に示す状態が反映されScope Variablesます。

> L
function indexOf() { [native code] }
> L.call
function call() { [native code] }
> L.call([], b) // This is what it is getting called with
-1

問題のある行をコピーすると(マイナスreturn)、期待どおりに実行されます。

> this instanceof Q && (b = null != (d = this.getO()) ? d.id : void 0, 0 <= L.call(null != (f = null != c ? "function" === typeof c.get ? c.get("foo") : void 0 : void 0) ? f : [], b))
false

この動作は、本番環境でのみ再現できます。それはかなり散発的に発生し、私が見つけることができたパターンはありません. Chrome 以外のブラウザで発生したことは確認されておらず、報告もありません。を実行Chrome 25.0.1364.172していますが、このエラーのログが にありますChrome 25.0.1364.152

これは、javascript の長いチャンクの途中で発生します (実行中にアニメーションに 1 秒程度の一時停止が表示されます)。削減されたデータ セットで実行しても再現されません。

このようにコンソールがスクリプトと同期していない理由について、デバッグのヒントや情報を持っている人はいますか?

編集: 変数 の縮小されたソースを検索しましたLが、 以外[].indexOfに設定されている場所は 2 つしかなく、この行にヒットすると、それらは両方とも明らかに範囲外です。

同じ問題が で発生しますがChrome Canary 27.0.1440.0、別の行で発生します。それ以外の状況は同じです。変数Lは定義されていますがL.call(...)TypeError.

4

0 に答える 0