gpt4 book ai didi

javascript - 短路评估令

转载 作者:行者123 更新时间:2023-11-30 13:02:50 25 4
gpt4 key购买 nike

一直以来我对短路评估的想法似乎都是错误的。

在 JavaScript 中:

var a = false, b = true, c=true;
a && b || c; // Evaluates to true

相比于

var a = false, b = true, c=true;
a && (b || c); // Evaluates to true

为什么 VM 在看到 a 为 false 时不停止?

更明确的例子:

function a(){
console.log("I'm A");
return false;
}
function b(){
console.log("I'm B");
return true;
}
function c(){
console.log("I'm C");
return true;
}

a() && b() || c();

输出是:

I'm A
I'm C
true

显然

a && b || c === (a && b) || c

所以我很困惑,为什么它会自动将 a && b 包装在一起?这些表达式的运算顺序究竟是什么?

大多数语言都遵守这个顺序吗(PHP好像也是这样)?

最佳答案

这些简单的规则适用:
- 逻辑表达式评估中的快捷方式并不意味着表达式被错误地评估,即结果与或没有快捷方式相同;
- AND boolean 运算符 (&&) 的优先级高于 OR (||)。这就是为什么 a && b 被“包裹”在一起的原因;
-依赖优先顺序是不安全的,使用括号 ;这也提高了可读性;
-如果结果已经定义,大多数语言在评估逻辑表达式时都会使用快捷方式,包括。 PHP;也有异常(exception),但最显着的是逆波兰符号语言,如 PostScript。

关于javascript - 短路评估令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16751692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com