在追踪错误时,我遇到了一些奇怪的行为,为什么会这样?
注意:作为参考,此代码是我使用闭包编译器压缩的JavaScript代码behing的结果。
在chrome中,调试器在抛出的错误上暂停。我已经向控制台发射了一些线路(见下文)。
a
> null
B.Ta.Cd[a]
> "Override this" error is thrown
B.Ta.Cd[null]
> undefined
我不明白,如果a
应该是null
,那么为什么后两行不会产生相同的东西。
有趣的是,我希望了解a
和null
的不同之处。
typeof(a)
> "function"
typeof(null)
> "object"
现在我想知道a
如何同时成为一个函数和null
?
This video shows the tests in the console
我的解决方法是检查typeof(a) == "function"
然后返回。但我不喜欢为我不理解的问题添加修复程序。
答案 0 :(得分:1)
根据ScottMermelstein的想法(感谢帮助),我们发现valueOf
函数上的a
函数已被覆盖以返回null。因此,试图查看控制台中a
的内容是非常误导的。
有关示例,请参阅this fiddle。