变量何时可以为null和函数?

时间:2013-11-06 15:54:28

标签: javascript

在追踪错误时,我遇到了一些奇怪的行为,为什么会这样?

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

在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

This video shows the tests in the console

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

1 个答案:

答案 0 :(得分:1)

根据ScottMermelstein的想法(感谢帮助),我们发现valueOf函数上的a函数已被覆盖以返回null。因此,试图查看控制台中a的内容是非常误导的。

有关示例,请参阅this fiddle