这些逻辑运算符是如何工作的

How these logical operators work?

本文关键字:工作 何工作 逻辑运算符      更新时间:2023-09-26

我正在努力理解这一行是如何工作的:

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

这行代码存在于一个函数中,该函数将mod作为参数,mod是一个对象。我的理解是,首先它(顺便说一句,为了精确起见,这里的"它"是什么?"它"就是引擎吗?)将检查mod和mod.dependence是否都解析为true,如果是,||运算符将短路,mod.dependences将返回。如果其中一个为false,则返回空数组。

不过,我不明白为什么它同时寻找mod和mod.dependences。没有mod,mod.dependence能存在吗?为什么不只是寻找mod.dependence?

这是Javascript中的一种常见技术。它本质上是在modmod.dependencies为null或未定义的情况下创建一个"回退"。mod && mod.dependencies的理由是,如果mod为空,则直接寻址mod.dependencies将抛出错误。因此,它进行检查以确保mod不为空&&mod.dependencies不为空。

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

你可以这样想这种说法:

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