【问题标题】:What is the technical term for a programming language's operator evaluation order?编程语言的运算符评估顺序的技术术语是什么?
【发布时间】: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


【解决方案1】:

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

在大多数语言中,&& 只会在第一个参数为真时计算第二个参数,而|| 只会在第一个参数为假时计算第二个参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多