编程语言的运算符评估顺序的技术术语是什么?
What is the technical term for a programming language's operator evaluation order?
JavaScript 中的数组解构或 Python 中的集合操作等几个过程促使我评估一个对象的 属性 或方法以在继续之前检查它是否存在,通常导致以下模式:
var value = collection.length
if value != null {
if value == targetValue {
/* do something */
}
}
为了制作 "cleaner" 代码,我想做类似的事情:
if value != null && value == targetValue {
/* do something */
}
或使用三元运算符:
var value = collection.length != null ? collection.length : 0
但是,我不确定编译器是否会在解决与 null
的第一次比较后立即停止评估,或者它是否会继续进行并产生错误。我当然可以做一些小的单元测试来找出答案,但我更愿意知道在任何语言的文档中查找正确的术语。这个词是什么,或者它在所有语言中都一样吗?
这被称为Short Circuit Evaluation 。它在语言之间非常一致。
在大多数语言中,&&
仅在第一个参数为真时才计算第二个参数,而 ||
仅在第一个参数为假时才计算第二个参数。
JavaScript 中的数组解构或 Python 中的集合操作等几个过程促使我评估一个对象的 属性 或方法以在继续之前检查它是否存在,通常导致以下模式:
var value = collection.length
if value != null {
if value == targetValue {
/* do something */
}
}
为了制作 "cleaner" 代码,我想做类似的事情:
if value != null && value == targetValue {
/* do something */
}
或使用三元运算符:
var value = collection.length != null ? collection.length : 0
但是,我不确定编译器是否会在解决与 null
的第一次比较后立即停止评估,或者它是否会继续进行并产生错误。我当然可以做一些小的单元测试来找出答案,但我更愿意知道在任何语言的文档中查找正确的术语。这个词是什么,或者它在所有语言中都一样吗?
这被称为Short Circuit Evaluation 。它在语言之间非常一致。
在大多数语言中,&&
仅在第一个参数为真时才计算第二个参数,而 ||
仅在第一个参数为假时才计算第二个参数。