【发布时间】:2019-10-29 15:50:50
【问题描述】:
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 的第一次比较后立即停止评估,或者它是否会继续运行并产生错误。我当然可以进行小型单元测试来找出答案,但如果我知道在任何语言的文档中查找的正确术语,我会更喜欢。这个术语是什么,或者可能在所有语言中都相同?
【问题讨论】:
-
&&、||和?:确保提前终止的属性称为 short-circuiting,如果我正确理解您的问题的话。
标签: operator-precedence evaluation