繁体   English   中英

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

[英]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中的常用技术。 它实际上创建了一个“回退”,以防modmod.dependencies为null或undefined。 mod && mod.dependencies是,如果mod为null,直接寻址mod.dependencies会抛出错误。 因此,它会检查以确保mod不为null, 并且&&mod.dependencies不为null。

|| [] || []部分表示如果modmod.dependencies为null或undefined, mod.dependencies dependencies分配给空数组。

您可以考虑这样的声明:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM