编程语言的操作员评估顺序的技术术语是什么?

时间:2019-10-29 15:50:50

标签: operator-precedence evaluation

诸如JavaScript中的数组解构或Python中的集合操作之类的几个过程促使我评估对象的属性或方法,以在进行操作之前检查其是否存在,通常会导致以下模式:

var value = collection.length

if value != null {
    if value == targetValue {
      /* do something */
    }
}

为了使代码更“干净”,我想做些类似的事情:

if value != null && value == targetValue {
      /* do something */
    }

或带有三元运算符:

var value = collection.length != null ? collection.length : 0

但是,我不确定编译器在解决与null的第一个比较后是否会立即停止评估,或者是否会继续产生错误。我当然可以进行小型单元测试以找出答案,但是如果我知道在任何语言的文档中查找正确的术语,我都希望使用。这个术语是什么,或者在所有语言中都一样?

1 个答案:

答案 0 :(得分:2)

这被称为Short Circuit Evaluation 。两种语言之间非常一致。

在大多数语言中,&&仅在第一个参数为true时才评估第二个参数,而||仅在第一个参数为false时才评估第二个参数。