Javascript 这些逻辑运算符是如何工作的?
我试图了解这条线是如何工作的:Javascript 这些逻辑运算符是如何工作的?,javascript,Javascript,我试图了解这条线是如何工作的: var dependencies = mod && mod.dependencies || []; 这行代码存在于一个函数中,该函数以mod为参数,mod为对象。我的理解是,首先它(顺便说一句,为了精确起见,这里的“it”是什么?它是引擎吗?)将检查mod和mod.dependentials是否都解析为true,如果是,则| |运算符将短路,mod.dependentials将返回。如果其中一个为false,则返回空数组 不过,我不明白为什么它同
var dependencies = mod && mod.dependencies || [];
这行代码存在于一个函数中,该函数以mod为参数,mod为对象。我的理解是,首先它(顺便说一句,为了精确起见,这里的“it”是什么?它是引擎吗?)将检查mod和mod.dependentials是否都解析为true,如果是,则| |运算符将短路,mod.dependentials将返回。如果其中一个为false,则返回空数组
不过,我不明白为什么它同时查找mod和mod.dependence。没有mod.dependencies可以存在吗?为什么不寻找mod.dependencies呢?这是Javascript中的一种常见技术。如果
mod
或mod.dependencies
为空或未定义,它本质上会创建一个“回退”。mod&&mod.dependencies
的原因是,如果mod
为空,则直接寻址mod.dependencies
将抛出错误。因此,它会检查以确保mod
不为空和(&&&
)mod.dependencies
不为空
||[]
部分意味着如果mod
或mod.dependencies
为空或未定义,则将dependencies
分配给空数组
你可以这样想:
如果定义了mod并且定义了mod.dependencies,则使用mod.dependencies。否则,请使用空数组([])
如果
mod
不存在,则mod.dependencies
是引用错误。@NiettheDarkAbsol如果mod
不存在,则根本不检查mod.dependencies
。@NiettheDarkAbsol在mod
为参数的函数中,它确实“存在”,但是它可能是null
@Michael,这也是一件好事。这就是为什么代码是这样写的,特别是为了避免那个特定的错误。mod
如果参数没有传递给函数,也可能是未定义的