在JavaScript中,在继续之前,使用多个或者if评估所有语句吗?

时间:2014-11-18 19:06:43

标签: javascript performance conditional-statements

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

e.g。

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的第一个条件是否会导致跳过剩余的并且要执行Success逻辑?

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

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

1 个答案:

答案 0 :(得分:4)

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

对于||,只有当左侧评估为假时,才会对右侧进行评估。

对于&&,只有当左侧评估为真时,才会对右侧进行评估。

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