1

在追踪错误时,我遇到了一些奇怪的行为,为什么会发生这种情况?

注意:作为参考,此代码是我的 JavaScript 代码使用闭包编译器压缩的结果。

在 chrome 中,调试器在抛出错误时暂停。我已经在控制台中输入了一些代码(见下文)。

a
> null
B.Ta.Cd[a]
> "Override this" error is thrown
B.Ta.Cd[null]
> undefined

我不明白如果a应该是null那么为什么后两行不产生相同的东西。

有趣的是,我想看看如何anull不同。

typeof(a)
> "function"
typeof(null)
> "object"

现在我想知道如何a既是函数又是null

该视频显示了控制台中的测试

我的解决方法是检查typeof(a) == "function"然后返回。但我不喜欢为我不理解的问题添加修复程序。

4

1 回答 1

1

根据 ScottMermelstein 的思路(感谢您的帮助),事实证明该valueOf函数上的a函数已被覆盖以返回 null。因此,试图查看a控制台中的内容是非常具有误导性的。

有关示例,请参见此小提琴。

于 2013-11-06T16:41:38.097 回答