即使条件为false,if语句中的代码也会运行

时间:2013-12-19 04:13:53

标签: javascript if-statement

由于某种原因,即使不满足条件,也会提示用户回答。

function makePurchase()
{
    if (locationName !== "SpacePort"){alert("You are not at the SpacePort.S")}
    if (locationName === "SpacePort");{
        userBuys= prompt(userName + ". "+"What do you purchase? Lasers, Sensors, or Repair Ship.");
        {if(userBuys === "Lasers" && credits>=1000){lasers+10; credits-1000; alert("You have purchased lasers.")};
        if(userBuys === "Sensors"){};if(userBuys === "Repair Ship"){shipDamage=0}}
    }
}

4 个答案:

答案 0 :(得分:4)

 if (locationName === "SpacePort");

有一个分号不应该在那里......

分号表示“if语句的结尾”。随后的{}中的代码与if无关。省略分号,它将按预期运行。

正如上面的评论中所提到的,良好的代码格式(包括回车,缩进等)可以帮助防止这些类型的错误。一旦你将代码发送到大范围的世界,压缩代码是一回事 - 但是当你仍在摆弄时,给自己留出空间,长变量名称和一致的缩进。你的代码越复杂,你就越希望你做到。

答案 1 :(得分:2)

这是因为您正在关闭if条件,请在

之后删除;

替换

if (locationName === "SpacePort");

if (locationName === "SpacePort")

答案 2 :(得分:2)

有一个错字。在locationName ===“SpacePort”的if语句后面有一个分号。应该是:

function makePurchase()
{
    if (locationName !== "SpacePort"){alert("You are not at the SpacePort.S")}
    if (locationName === "SpacePort"){
        userBuys= prompt(userName + ". "+"What do you purchase? Lasers, Sensors, or Repair Ship.");
        {if(userBuys === "Lasers" && credits>=1000){lasers+10; credits-1000; alert("You have purchased lasers.")};
        if(userBuys === "Sensors"){};if(userBuys === "Repair Ship"){shipDamage=0}}
    }
}

答案 3 :(得分:1)

在if语句后删除分号:

 if (locationName === "SpacePort");

应该是

 if (locationName === "SpacePort")

`