【发布时间】:2018-07-31 01:24:06
【问题描述】:
如果函数未定义,为什么检查 NOT typeof === 'undefined' 会失败? 然而在特定对象上检查 NOT 'undefined' 是安全的吗?
这是我的示例:(这确实存在于我的代码中)
if (typeof $.fn.dropdownn.Constructor.VERSION !== 'undefined'){
//do something
}
我可以在 VERSION{N} 中添加一个额外的字母,但它仍然正常失败
但是 如果我向 Constructor{r} 添加一个额外的字母,它会失败并显示“VERSION”未定义 如果我在实际函数名称下拉{n}中添加一个额外的字母,“构造函数”是未定义的。
(我正在测试添加一个额外的字母来合成不存在的。 事实上,它告诉我链中的下一个对象......从带有更改字母的那个对象是未定义的 :: 似乎暗示它确实正在检查链。)
我要检查的是是否正在使用特定的“版本”。 在某些情况下,将使用不同的“版本”。 在其他情况下,这个 $.function.dropdown 将完全丢失。
但我的问题不是“操作方法”。而是“为什么会这样?” ::
如果 dropdown.constructor.VERSION 未定义,那么 dropdownN.constructor.VERSION 未通过同一个检查进行定义是合理的。
然而,如果该函数 ($.fn.dropdown) 完全缺失,那么整个部分将因未定义而失败
为什么 typeof 不能安全地使用任何一种方式?看来 typeof 仅限于最终对象,而不是整个对象链??
【问题讨论】:
-
请提供一个清晰的示例,说明失败的内容和失败的错误,以及意外没有失败的内容以及您预期失败的原因。
-
我认为您的
$.fn.dropdown.Constructors很可能是一个对象,这就是为什么它对您有用并且它不会崩溃,因为它没有尝试访问未定义对象的属性。因此它与函数typeof完全无关 -
"为什么 typeof 不能安全地使用任何一种方式?" typeof 不会走“树”,它只是在寻找您引用的项目。
-
这可能完全改变了问题。但我现在已经澄清了我的问题。哪个是“如果“x.x.x.object”链中的某些内容不存在,为什么 typeof !== 'undefined' 会失败?
标签: javascript undefined typeof