我怎么能比较JS中的undefined?

时间:2012-12-17 09:16:02

标签: javascript

嗨,我对JS很新。

假设我有一个名为test的对象,它没有属性missing。但我尝试访问相同的内容:

test.missing //getting undefined as output

现在我正在尝试访问missing属性(例如此test.missing.404),这将为我提供TypeError。但是我的书说我们可以像这样摆脱这个TypeError

test.missing && test.missing.404

现在我的一个大问题是如何针对&&类型和undefined类型执行TypeError。无法猜出Js在这里做了什么。

提前致谢。

2 个答案:

答案 0 :(得分:4)

js中的

undefined被视为false,如果某些内容有价值,则会被视为true,因此:

//if test.missing is NOT undefined and test.missing.404 is also NOT undefined
if (test.missing && test.missing.404)

答案 1 :(得分:1)

首先,您应该知道JS与许多其他编程语言一样,在比较过程中使用短路技术。因此,在这种情况下,如果第一个条件为假,则无需检查下一个条件。这是因为0 && X 将始终为0。

据说,test.missing && test.missing.404可以被视为“如果测试对象缺少属性并且(测试对象的)缺失属性具有404属性”则继续。如果测试对象首先没有丢失属性,JS解释器将完全忽略对缺失属性的404属性的检查。

所以关键是以上代码不是&&比较undefined和TypeError,而是首先检查缺少的属性,如果存在第一个属性,则检查404属性。我希望这有道理,广告解释得很好。