Javascript - 不止一个条件

时间:2018-05-27 08:52:56

标签: javascript

我刚刚开始学习JS,我想问一个我无法完成的任务。

var balance = 325.00;
var checkBalance = true;
var isActive = false;

//The first question
if (checkBalance = true) {
        // the second question
        if(isActive = false) {
            console.log("Your account is no longer active.");

        } else if(isActive = true) {

            if(balance > 0) {
                console.log("Your balance is " + balance.tofix(2) +"$.");
            } else if(balance = 0) {
                console.log("Your Accunt is empty");  
            } else {
                console.log("Your balance is negetive, please contant bank");
            }
        }
    else {
        console.log("Thank you. Have a nice day");

目标是写一台ATM,为了做到这一点,我想在同一时间写出多个条件(正如你在代码中看到的那样)

  1. 为什么这段代码不起作用?
  2. 是否可以在另一个if语句中写入if语句?
  3. 有更好的解决方案吗?

5 个答案:

答案 0 :(得分:0)

在javascript中你应该使用===表示条件相等 你的代码:

if (checkBalance = true) {

正确的是:

if (checkBalance === true) {

同样适用于

if(isActive = false) {

正确的是:

if(isActive === false) {

答案 1 :(得分:0)

=是赋值,==用于检查,更改=到==,===用于检查相等性和类型。

   if (checkBalance = true) {

答案 2 :(得分:0)

你走在正确的轨道上,确实可以在另一个内部写一个if statement。但是,你错过了一个括号,你检查平等的方式也应该不同。我编辑了你的代码,所以我可以解释一下:

var balance = 325.00;
var checkBalance = true;
var isActive = false;

//The first question
if (checkBalance) {
    // the second question
    if(isActive = false) {
        console.log("Your account is no longer active.");

    } else if(isActive) {

        if(balance > 0) {
            console.log("Your balance is " + balance.tofix(2) +"$.");
        } else if(balance === 0) {
            console.log("Your Accunt is empty");  
        } else {
            console.log("Your balance is negetive, please contant bank");
        }
    }
else {
    console.log("Thank you. Have a nice day");
}

我主要更改了代码中的两件事。第一个是改变

if (checkBalance = true)

进入这个:

if (checkBalance)

编辑1:语句缩短

您可以省略= true部分,因为checkBalance已经是布尔值。这意味着它已经是truefalse,这是if statement接受的值。这让我进入了第二次编辑,这是最重要的编辑。

编辑2:检查是否相等

在您的代码中,您在= true内使用if statements。遗憾的是,仅使用一个=符号不会检查是否相等,而是指定值。在分配值=时,您只能使用一个var a = 1;。相反,您应该使用=之类的三个===唱歌。这实际上检查了两件事。首先,它检查值的类型是否相同。然后,它检查值是否相等。您还可以使用=之类的两个== sings,这将更松散地检查相等性,因为它不会检查类型是否相同。如其他答案所述,此处===更为可取。

我希望这能回答你的问题。如果没有,请在下面评论。

答案 3 :(得分:0)

第一个:

= : is assign 
=== :is compare

又一件事是:

balance.tofix(2)

应为:

balance.toFixed(2)

而我只是这样编辑您的代码:

var balance = 325.00;
var checkBalance = true;
var isActive = false;

//The first question
if(!checkBalance) console.log("Thank you. Have a nice day");
else {
  if(!isActive) console.log("Your account is no longer active.");
  else{
    if(balance > 0) {
      console.log("Your balance is " + balance.toFixed(2) +"$.");
    } else if(balance = 0) {
        console.log("Your Accunt is empty");  
    } else {
        console.log("Your balance is negetive, please contant bank");
    }
  }
}

答案 4 :(得分:-1)

您在语法错误方面得到了很好的答案。关于“有更好的方法”,不需要使用truefalse===进行平等检查,因为{{1}中已经隐含了真/假条件。您可以将其用作变量。此外,由于它是一个只能为true或false的布尔值,因此使用if然后使用if完全没问题。无需执行elseif

使用辅助函数来处理复杂的情况会使代码更具可读性。

else if