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是 at L.call(...)。看着Scope Variables,我没有看到Lin 的实例Local。在Closure中,我看到:

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 的中途(在运行时动画中有一秒钟左右的可见停顿)。在减少的数据集上运行它不会重现它。

有没有人有任何调试提示和/或有关控制台可能以这种方式与脚本不同步的原因的信息?

编辑:我搜索了变量的缩小源L,但只有两个地方设置为除 之外的任何值[].indexOf,当我点击这一行时,它们都肯定超出了范围。

相同的问题发生在 中Chrome Canary 27.0.1440.0,但在不同的行上。其他情况相同:变量L已定义但L.call(...)抛出TypeError.

4

0 回答 0