诸如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
的第一个比较后是否会立即停止评估,或者是否会继续产生错误。我当然可以进行小型单元测试以找出答案,但是如果我知道在任何语言的文档中查找正确的术语,我都希望使用。这个术语是什么,或者在所有语言中都一样?
答案 0 :(得分:2)
这被称为Short Circuit Evaluation 。两种语言之间非常一致。
在大多数语言中,&&
仅在第一个参数为true时才评估第二个参数,而||
仅在第一个参数为false时才评估第二个参数。