if语句混合在一起

if statements blending together

本文关键字:在一起 混合 语句 if      更新时间:2023-09-26

我是JavaScript的新手,正在尽我所能,所以请耐心等待。我使用if else语句来问两个问题。

  1. 你住在哪里
  2. 你在家多少小时

根据答案houseapartment,以及不到5小时的时间,他推荐一只宠物。

我遇到的问题是,如果我键入house并且超过5小时,它也会返回超过5小时的公寓选择。

这是我的代码:

var residence = prompt("Enter House, Apartment or Dorm");
var hours = prompt("Amount of hours home", "");
if ((residence == "House" || "house") && (hours <= 5)) {
    var x=window.confirm("You should get a hamster" + "'nWould you like to Purchase one?")
    if (x)
        window.alert("Thank you for your purchase!")
    else
        window.alert("Too bad")
} 
else if ((residence == "House" || "house") && (hours > 5) && (hours <= 10)) {
    var x = window.confirm("You should get a cat" + "'nWould you like to Purchase one?")
    if (x)
        window.alert("Thank you for your purchase!")
    else
        window.alert("Too bad")
}
if ((residence == "Apartment" || "apartment") && (hours <= 5)) {
    var x = window.confirm("You should get a gold fish" + "'nWould you like to Purchase one?")
    if (x)
        window.alert("Thank you for your purchase!")
    else
        window.alert("Too bad")
}

我希望这对我的要求有意义。谢谢你的帮助。

有一个轻微的逻辑问题:

residence == "House" || "house"

正在评估两个表达式

1:residence == "House"

2) "house"

"house"是所谓的truthy,意思是当测试时,它将被评估为true。所以,每次调用这个代码,或者它的公寓对应代码时,它都会评估为true。

你应该写的是residence == "House" || residence == "house"。然而,有一种更干净的方法来处理这个问题:

residence.toLowerCase() == "house"

您的新代码将如下所示:

var residence = prompt("Enter House, Apartment or Dorm");
var hours = prompt("Amount of hours home", "");
if (residence.toLowerCase() == "house" && (hours <= 5)) {
    var x=window.confirm("You should get a hamster" + "'nWould you like to Purchase one?")
    if (x)
        window.alert("Thank you for your purchase!")
    else
        window.alert("Too bad")
} 
else if (residence.toLowerCase() == "house" && (hours > 5) && (hours <= 10)) {
    var x = window.confirm("You should get a cat" + "'nWould you like to Purchase one?")
    if (x)
        window.alert("Thank you for your purchase!")
    else
        window.alert("Too bad")
}
else if (residence.toLowerCase() == "apartment" && (hours <= 5)) {
    var x = window.confirm("You should get a gold fish" + "'nWould you like to Purchase one?")
    if (x)
        window.alert("Thank you for your purchase!")
    else
        window.alert("Too bad")
}