当第一个条件返回true时,具有多个“或”运算符的“ if”语句是否退出,还是对所有条件都进行了评估?

即您的条件顺序重要吗?

示例场景:

具有if语句的shouldComponentUpdate()函数和评估的条件在成本上有所不同。

条件的顺序(从最便宜的到第一个)是否有望改善性能,或者即使第一个条件返回true,整个if语句也会得到评估?

例如:

假设以下形式的if语句:

if ( (this.props.value != nextProps.value) || (deepDiffer(object1, object2) )


如果(this.props.value != nextProps.value)返回true,代码是否仍将评估deepDiffer?还是会立即输入if语句并执行条件代码?

最佳答案

这是Javascript,所以是的,当第一个条件为true时就会退出。

根据MDN


  当逻辑表达式从左到右求值时,将对其进行测试
  使用以下规则进行可能的“短路”评估:
  
  
  错误&&短路评估为错误。
  真实||短路评估为真。
  
  
  逻辑规则保证这些评估总是正确的。请注意,以上表达式的任何部分均不进行评估,因此任何一侧
  这样做的效果不会生效。

关于javascript - react 本地“如果”语句的行为?提前退出还是全面评估?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57294221/

10-13 06:35