JavaScript条件,首先终止“true”?

时间:2017-08-09 20:21:01

标签: javascript

JavaScript是否像C这样的语言运行,如果给出多个条件,那么if语句可以保证整个事物被评估为false / true吗?

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

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

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

我意识到这是一个快速的Google,但我完全忘记了调用此编译器级别的行为,因此无法找到答案。

4 个答案:

答案 0 :(得分:2)

我们可以运行一个简单的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');
}

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

答案 1 :(得分:0)

您要找的是short circuit evaluation。是的,javascript短路,以便第二个表达式不会被评估,如果它不需要。

答案 2 :(得分:0)

答案 3 :(得分:0)

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

例如:

return object && object.property

您可以在此处详细了解:

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