我收到错误
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
,我没有看到L
in 的实例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
.