在追踪错误时,我遇到了一些奇怪的行为,为什么会发生这种情况?
注意:作为引用,此代码是我的 JavaScript 代码使用闭包编译器压缩的结果。
在 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"
然后返回。但我不喜欢添加对我不理解的问题的修复。
最佳答案
根据 ScottMermelstein 的思路(感谢您的帮助),结果发现 a
函数上的 valueOf
函数已被重写以返回 null。因此,尝试查看控制台中的 a
会被证明是相当误导的。
参见this fiddle举个例子。
关于javascript - 什么时候变量可以同时为 null 和函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19816645/