条件评估时间(Javascript)

条件评估时间(Javascript),javascript,if-statement,conditional,evaluation,Javascript,If Statement,Conditional,Evaluation,我感兴趣的是if/else语句中的条件在什么时间点得到计算 假设有以下示例: if (complex condition 1) { do something } else if (complex condition 2) { do something else } else if (complex condition 3) { do something else } else { do anything } 我想知道的是:是否每个复杂条件都提前得到检查,解释器只是执行条件中为真

我感兴趣的是if/else语句中的条件在什么时间点得到计算

假设有以下示例:

if (complex condition 1) {
  do something
}
else if (complex condition 2) {
  do something else
}
else if (complex condition 3) {
  do something else
}
else {
  do anything
}
我想知道的是:是否每个复杂条件都提前得到检查,解释器只是执行条件中为真的代码部分,还是从第一个条件开始,当第一个条件为假时才计算第二个条件


我对为低端移动设备做一些优化很感兴趣

在执行流中到达if语句时,将对if语句的condition子句求值。在您的示例中,如果第一个条件为true,则不会计算任何其他条件。

在执行流中到达if语句时,将计算if语句的condition子句。在您的示例中,如果第一个条件为true,则不会计算任何其他条件。

正如短路计算所说:……只有当第一个参数不足以确定表达式的值时,才会执行或计算第二个参数


当到达true语句时,执行将停止。

正如Short-circuit_evaluation所说:…仅当第一个参数不足以确定表达式的值时,才执行或计算第二个参数


当到达true语句时,执行将停止。

只有在第一个语句为false时,才会计算第二个语句。我不确定你所说的复杂条件是什么意思,但即使是像ifx | | y这样简单的条件,如果x为真,y也不会被计算。您可以通过在条件中放置函数调用并在函数中调用console.log来测试这一点。出于性能原因,我希望避免低端移动设备必须或将提前评估这些复杂条件中的任何一个=除非它们确实需要。JavaScript仅在得到这些条件时才评估所有代码只有当第一个为false时,才会计算第二个。我不确定你所说的复杂条件是什么意思,但即使是像ifx | | y这样简单的条件,如果x为真,y也不会被计算。您可以通过在条件中放置函数调用并在函数中调用console.log来测试这一点。出于性能原因,我希望避免低端移动设备必须或将提前评估这些复杂条件中的任何一个=除非它们确实需要。JavaScript仅在得到这些条件时才评估所有代码这里。术语短路是指使用&&和| | |,而不是嵌套的if语句对布尔表达式进行求值。术语短路是指使用&&和| |,而不是嵌套的if语句对布尔表达式进行求值。