gpt4 book ai didi

JavaScript 将变量中的 && 语句组合为 true 或 false

转载 作者:搜寻专家 更新时间:2023-11-01 04:43:56 25 4
gpt4 key购买 nike

只是一个简单的问题。我找不到与此相关的任何内容,因为我真的不知道如何解释它...但是,如果我使用 && 组合两个 bool 值来创建另一个变量,会发生什么?

var is_enabled = isEnabled() && isSupported();

如果 isEnabled() 为 false 而 isSupported() 为 true,是否等于 false?

最佳答案

在 Javascript 中,&&|| 运算符有点奇怪。这取决于值是“假”(零、未定义null、空字符串、NaN)还是真值(任何其他值,包括空数组)。

&&如果第一个值为“falsy”,则运算结果为第一个值,否则为第二个值。使用 || 如果第一个值是“falsy”,那么操作的结果将是第二个值,否则它将是第一个值。

例子:

var a = 5 && 3; // a will be 3
var a = 0 && 7; // a will be 0

var a = 1 || 2; // a will be 1
var a = 0 || 2; // a will be 2

如果您想替换它,这将非常有用:

if (x == null){
x = 5;
}

与:

x = x || 5;

简而言之,如果 isEnabled() 为真,则 is_enabled 将设置为 isSupported() 返回的值。如果 isEnabled() 为假值,则 is_enabled 将设置为该假值。

正如罗伯特所指出的,存在短路:

var x = 5 || infinite_loop();
var x = false && infinite_loop();

在这两种情况下,infinite_loop() 调用都不会发生,因为这两个操作是短路的 - || 不会计算第二个值第一个值为 truthy,当第一个值为 falsy 时 && 不计算第二个值。

关于JavaScript 将变量中的 && 语句组合为 true 或 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11545558/

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