gpt4 book ai didi

javascript - JavaScript 中 bool switch 语句的目的是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 03:50:13 25 4
gpt4 key购买 nike

我刚刚在别人的 JavaScript 代码中遇到了一个 boolean switch 语句。它看起来有点像这样:

switch (a || b) {
case true:
// do some stuff
break;
default:
// do other stuff
break;
}

我从事编程的时间并不长,但我以前肯定从未见过这样的事情。这似乎有点愚蠢,但我想给程序员带来疑问。上面的代码和下面的代码在功能上有什么区别吗:

if (a || b) {
// do some stuff
}
else {
// do other stuff
}

如果有,那是什么?

最佳答案

是的,有区别。考虑到您的示例,

var a = 0,
b = 1;

现在让我们看一下 switch 语句:

switch (a || b) {

运行此 switch 语句时,表达式 a || b 被评估。 || 是一个短路运算符,如果为真则返回左操作数的值,否则返回右操作数的值。在这种情况下,a = 0,因此将返回 b (1)。现在看一下 case 语句:

case true:

在评估 case 语句时,不会对任何一个值执行类型强制,并且假定严格相等。在我们的示例中,这与编写 1 === true 相同,因此永远不会运行 case 语句之后的代码。那么让我们看一下 if 语句:

if (a || b) {

对于 if 语句,条件表达式 a || b 被评估,然后结果被转换为 bool 值。在内部,这看起来像 ToBoolean(a || b)。因为一个|| b 的计算结果为 1 并且将 1 强制转换为 bool 值是 true,条件通过并且 block 执行。

更好的等价物是:

if ((a || b) === true) {
// do some stuff
}
else {
// do other stuff
}

正如已经指出的,在存在多种情况且类型可能不同的情况下,switch 语句可能很有用。然而,这种情况很少见。

关于javascript - JavaScript 中 bool switch 语句的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4461276/

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