[英]How these logical operators work?
我试图了解这条线的工作原理:
var dependencies = mod && mod.dependencies || [];
这行代码存在于一个函数中,该函数将mod作为参数,mod是一个对象。 我的理解是,首先它(顺便说一下,为了精确什么是“它”在这里?是“它”引擎?)将检查mod和mod.dependencies是否解析为true,如果是这样,|| 运算符将被短路并且mod.dependencies将返回。 如果其中一个为false,则返回空数组。
但是,我不明白为什么它会同时寻找mod和mod.dependencies。 没有mod可以存在mod.dependencies吗? 为什么不只是寻找mod.dependencies?
这是Javascript中的常用技术。 它实际上创建了一个“回退”,以防mod
或mod.dependencies
为null或undefined。 mod && mod.dependencies
是,如果mod
为null,直接寻址mod.dependencies
会抛出错误。 因此,它会检查以确保mod
不为null, 并且 ( &&
) mod.dependencies
不为null。
|| []
|| []
部分表示如果mod
或mod.dependencies
为null或undefined, mod.dependencies
dependencies
分配给空数组。
您可以考虑这样的声明:
如果定义了mod并定义了mod.dependencies,则使用mod.dependencies。 否则,使用空数组([])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.