这些逻辑运算符如何工作?

时间:2015-11-24 19:00:05

标签: javascript

我正在尝试理解这条线是如何工作的:

var dependencies = mod && mod.dependencies || [];

这行代码存在于一个函数中,该函数将mod作为参数,mod是一个对象。我的理解是,首先它(顺便说一下,为了精确什么是“它”在这里?是“它”引擎?)将检查mod和mod.dependencies是否解析为true,如果是这样,||运算符将被短路并且mod.dependencies将返回。如果其中一个为假,则返回空数组。

我不明白为什么它会同时寻找mod和mod.dependencies。没有mod可以存在mod.dependencies吗?为什么不只是寻找mod.dependencies?

1 个答案:

答案 0 :(得分:13)

这是Javascript中的常用技术。如果modmod.dependencies为null或未定义,它实质上会创建“后备”。 mod && mod.dependencies的原因是,如果mod.dependencies为空,直接寻址mod会抛出错误。因此,它会检查以确保mod不为空&&mod.dependencies不为空。

|| []部分表示如果modmod.dependencies为空或未定义,请将dependencies指定给空数组。

你可以考虑这样的陈述:

  

如果定义了mod并定义了mod.dependencies,请使用mod.dependencies。否则,使用空数组([])

相关问题