javascript - 什么时候变量可以同时为 null 和函数?

标签 javascript

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

注意:作为引用,此代码是我的 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

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/

相关文章:

javascript - Angular 路由困惑/奇怪的行为

javascript - 如何调用绑定(bind)到 ng-click 的 Angular 方法

javascript - 使用 Highcharts 的可拖动点动态设置 DragMax

javascript - react : How to invoke a modal if components are unrelated

javascript - 使用 GetDerivedStateFromProps 初始化后将 Prop 转换为状态?

javascript - 基于文本的rpg javascript练习项目

javascript - 正则表达式替换 float 中的多个句点

javascript - 无法删除 JQuery Accordion 标题之间的空格

javascript - 如何解决移动网站 map 缩放和页面缩放冲突?

javascript - 在自定义对象中实现事件