gpt4 book ai didi

javascript - 那个 switch case 在 JS 中是如何工作的? switch(true) 是什么意思?

转载 作者:行者123 更新时间:2023-11-29 17:45:57 25 4
gpt4 key购买 nike

我目前正在做项目,其中有部分代码我不理解。您可以在下面看到其中一个(用 JS 编写):

  switch (true) {
case parseInt(data):
return 'data';

case parseInt(row):
return 'row';

default:
return 'default';
}

我创建了 JSFiddle 来测试这个 switch(true) 语句并查看它的行为方式。它总是返回“默认”字符串。有人可以向我解释一下那里发生了什么吗?
JSFiddle switch test

最佳答案

JavaScript 中的开关简单地比较 case 的值是否严格等于 (===) 到 switch 中的值 (在这种情况下 true)。这通常用于比较字符串,但 bool 值也可以,尽管不太常见。举个例子:

switch (true) {
case 1 + 1 === 3:
return 'A';
case 2 * 2 === 4:
return 'B';
default:
return 'C';
}

此代码将返回 'B',因为它是第一个匹配 true 的情况。如果所有情况都不匹配 true,它将返回 'C'


关于您的特定场景;我建议将您的代码重写为以下内容:

if (parseInt(data) === true) {
return 'data';
}

if (parseInt(row) === true) {
return 'row';
}

return 'default';

此代码与您的完全相同,但读者会立即清楚发生了什么。

我不确定您使用此功能的目的是什么,因此我无法推荐解决您问题的最佳方法。不过,我可以向您解释为什么它可能不起作用。

parseInt 函数将始终返回一个数字或NaN(以防无法解析输入)。尽管一个数字可以为真,但它永远不会是严格的 true。这就是为什么您的函数总是返回 'default' 的原因。同样,我不知道您的目标是什么,但您可能想要检查该值是否为 truthy 而不是 true:

if (parseInt(data)) {
// Data can be parsed to a number and is not 0
return 'data';
}

if (parseInt(row)) {
// Row can be parsed to a number and is not 0
return 'row';
}

return 'default';

关于javascript - 那个 switch case 在 JS 中是如何工作的? switch(true) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49758851/

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