我正在尝试理解这条线是如何工作的:
var dependencies = mod && mod.dependencies || [];
这行代码存在于一个函数中,该函数将mod作为参数,mod是一个对象。我的理解是,首先它(顺便说一下,为了精确什么是“它”在这里?是“它”引擎?)将检查mod和mod.dependencies是否解析为true,如果是这样,||运算符将被短路并且mod.dependencies将返回。如果其中一个为假,则返回空数组。
我不明白为什么它会同时寻找mod和mod.dependencies。没有mod可以存在mod.dependencies吗?为什么不只是寻找mod.dependencies?
答案 0 :(得分:13)
这是Javascript中的常用技术。如果mod
或mod.dependencies
为null或未定义,它实质上会创建“后备”。 mod && mod.dependencies
的原因是,如果mod.dependencies
为空,直接寻址mod
会抛出错误。因此,它会检查以确保mod
不为空且(&&
)mod.dependencies
不为空。
|| []
部分表示如果mod
或mod.dependencies
为空或未定义,请将dependencies
指定给空数组。
你可以考虑这样的陈述:
如果定义了mod并定义了mod.dependencies,请使用mod.dependencies。否则,使用空数组([])