【问题标题】:JavaScript conditionals, terminate on first "true"? [duplicate]JavaScript条件,在第一个“真”时终止? [复制]
【发布时间】:2017-08-09 20:21:01
【问题描述】:

JavaScript 的操作方式是否与 C 等语言相同,如果给定多个条件,则可以保证整个事物被评估为 false/true 时的 if 语句?

I.E.

if( x == y || y == z)

if( x == y && y == z)

我知道如果第一个条件被评估为真,C 不会检查第一个语句中的第二个条件,以及不检查第二个语句中的第二个条件是否第一个条件被评估为假。

我意识到这是一个快速的谷歌,但我完全忘记了这个编译器级别的行为被称为什么,因此无法找到答案。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    我们可以运行一个简单的 javascript 测试来查看它的实际效果。

    function check(){
      console.log('called');
      return true;
    }
    let x = true, y = true;
    if(x != y || x == check()){
      console.log('or verified');
    }
    
    if(x != y && x == check()){
      console.log('and verified');
    }

    我们的控制台不会为我们的第二个 if 语句显示 and verified,因为它从未运行。

    【讨论】:

      【解决方案2】:

      您正在寻找的是short circuit evaluation。是的,javascript 会短路,因此如果不需要,第二个表达式就不会被计算。

      【讨论】:

        【解决方案3】:
        【解决方案4】:

        是的,Javascript 有它,名称是“短路评估”,就像 C 一样。事实上,我经常使用它来确保我不会从不存在的对象中读取属性。

        例如:

        return object && object.property
        

        您可以在此处阅读更多相关信息:

        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多