gpt4 book ai didi

javascript - 无论我传入什么字符串,if 语句始终为真

转载 作者:行者123 更新时间:2023-11-30 07:04:24 25 4
gpt4 key购买 nike

我刚学javascript。我正在尝试创建一个简单的小费计算器,它根据用户对服务质量的描述来更改小费金额。

我为参数服务传递了一个字符串,并想检查它是否等于每个小费金额的任何值。如果是这样,我会尝试根据该值计算小费。

但是,在测试多个值之后,似乎我的函数在第一个 if 语句中对任何值都为真。我没有看到什么?

/* Create an array of possible descriptions of service*/

function tip (cost, service) {
if (service == "good" || "" || "nice"){
return cost + cost * .10;
}else if (service == "bad" || "horrible"){
return cost + cost * .5;
}else if (service == "excellent" || "great"){
return cost + cost * .15;
}else{
console.log("How was the service?");
}
}

console.log(tip(65, "great"));

最佳答案

“或”|| 的存在是为了您的方便,因为它会阻止您编写额外的 if 语句。如果没有 ||,您的第一条语句将写成

if (service == "good") 
return cost + cost * .10;
if ("")
return cost + cost * .10;
if ("nice")
return cost + cost * .10;

当它这样写时,你会发现这不是你的意思。

if("") 将始终为 false,而 if("nice") 将始终为 true,因此您的其他条件将永远不会得到满足。

每次编写条件语句时,您都需要在 || 之间编写每个语句,就好像它是一个单独的 if 语句一样。在这种情况下,您省略了变量的名称,而不是

if (service == "good" || "" || "nice"){

你应该有

if (service == "good" || service == "" || service == "nice"){

另一件需要注意的事情是,在 Javascript 中,使用 === 几乎总是比 == 更好的主意。这是因为 == 会在尝试比较值之前执行一些称为类型强制的时髦操作,但是 === 会直接比较两个值。

所以你最后的说法应该是

if (service === "good" || service === "" || service === "nice"){

将同样的意识形态应用于所有其他陈述,你会得到:

function tip (cost, service) {
if (service === "good" || service === "" || service === "nice"){
return cost + cost * .10;
}else if (service === "bad" || service === "horrible"){
return cost + cost * .5;
}else if (service === "excellent" || service === "great"){
return cost + cost * .15;
}else{
console.log("How was the service?");
}
}

关于javascript - 无论我传入什么字符串,if 语句始终为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33949030/

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