【问题标题】:Time of evaluation of condition (Javascript)条件评估时间(Javascript)
【发布时间】:2016-11-12 13:48:54
【问题描述】:

我对 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(x || y) 这样简单的东西,如果 x 为真,也不会评估 y。您可以通过在条件中调用函数并在函数中调用 console.log() 来自己测试。
  • 出于性能原因,我想避免低端移动设备必须或将提前评估任何这些复杂条件(= 除非确实需要它们)。
  • JavaScript 仅在“到达那里时”评估所有代码。

标签: javascript if-statement conditional evaluation


【解决方案1】:

if 语句的条件子句在执行流程中到达if 语句时进行评估。在您的示例中,如果第一个条件是 true,则将评估 none 的其他条件。

【讨论】:

    【解决方案2】:

    正如“Short-circuit_evaluation”所说:“...只有当第一个参数不足以确定表达式的值时,才会执行或评估第二个参数。”

    当达到一个真实的语句时,执行将停止。

    【讨论】:

    • 术语“短路”是指使用&& 和|| 对布尔表达式的求值,而不是嵌套的if 语句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2020-11-16
    • 2017-12-18
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多