在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的第一个条件将停止执行剩余条件并继续执行其他条件。)
答案 0 :(得分:4)
||
和&&
。
对于||
,只有当左侧评估为假时,才会对右侧进行评估。
对于&&
,只有当左侧评估为真时,才会对右侧进行评估。
请注意,这不仅仅是为了表现。它还可以防止错误发生:如果左侧不符合预期,有时评估右侧是不安全的或无意义的。