繁体   English   中英

Javascript-不止一种情况

[英]Javascript - More than one condition

我刚开始学习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. 有更好的解决方案吗?

在javascript中,应使用===表示条件等于您的代码:

if (checkBalance = true) {

正确的是:

if (checkBalance === true) {

一样

if(isActive = false) {

正确的是:

if(isActive === false) {

=是分配,==用于检查,将=更改为==,===用于检查相等性和类型。

   if (checkBalance = true) {

您走在正确的道路上,确实有可能在另一个if statement编写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");
}

我主要在您的代码中更改了2件事。 首先是变化

if (checkBalance = true)

变成这个:

if (checkBalance)

编辑1:较短的if语句

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

编辑2:检查是否相等

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

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

第一:

= : 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");
    }
  }
}

您已获得有关语法错误的良好答案。 关于“有没有更好的办法”,抽查的需要平等的truefalse使用===是没有必要的,因为真/假已经隐含了if条件。 您可以单独将其用作变量。 另外,由于它是一个布尔值,只能为true或false,因此使用if and then else完全可以做到。 不需要, ifelse if

使用辅助函数来处理复杂的案例可以使代码更具可读性。

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

//The first question
if (checkBalance) {
    // the second question
    if(isActive) {
        handleIsActive(balance);
    } else {
        console.log("Your account is no longer active.");
    }
} else {
    console.log("Thank you. Have a nice day");
}

function handleIsActive(balance) {
    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");
    }
    return;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM