在 JavaScript 中,在继续之前执行具有多个 or 的 if 评估所有语句

In JavaScript, does an if with multiple or's evaluate all statements before continuing?

本文关键字:or if 语句 评估 JavaScript 继续 执行      更新时间:2023-09-26

在Javascript中,特别是Google的V8引擎中,在确定if比较的最终结果之前,在列表或条件"||"中编写多个函数调用是否执行所有函数?

例如

var path = 'C:''MyFiles''file.doc';
if (   path.match(/'.docx?/gi)
    || path.match(/'.xlsx?/gi)
    || path.match(/'.xml/gi)
    || path.match(/'.sql?/gi)) {
    // Success
} else {
    // Failed
}

所以我想问:这是否与"&&"条件的工作方式相似但相反?计算结果为 TRUE 的第一个条件是否会导致跳过其余条件并执行成功逻辑?

我在我正在寻找的任何文档中都找不到这一点。这并不是说这会产生巨大的差异,但是我很好奇这实际上是如何执行的。

(类似于 And '&&' 我的意思是,评估为 FALSE 的第一个条件将停止执行其余条件并继续执行其他条件。

你是对的。它被称为短路评估,它适用于||&&

对于||,只有当左手边的计算结果为假时,才会对右手边进行求值。

对于&&,只有当左侧的计算结果为true时,才会对右侧进行计算。

请注意,这不仅仅是为了性能。它还可以防止错误发生:有时,如果左侧与预期不符,评估右侧将不安全或毫无意义。