JavaScript是否像C这样的语言运行,如果给出多个条件,那么if语句可以保证整个事物被评估为false / true吗?
即
if( x == y || y == z)
或
if( x == y && y == z)
我知道如果第一个条件被评估为真,C不会检查第一个语句中的第二个条件,并且不检查第二个语句中的第二个条件是第一个条件被评估为假。
我意识到这是一个快速的Google,但我完全忘记了调用此编译器级别的行为,因此无法找到答案。
答案 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