Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-多个条件_Javascript - Fatal编程技术网

Javascript-多个条件

Javascript-多个条件,javascript,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 lon

我刚开始学习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,为了做到这一点,我希望在同一时间编写多个条件(如代码中所示)

  • 为什么这个代码不起作用
  • 是否可以在另一个if语句中写入if语句
  • 有更好的解决办法吗

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

    if (checkBalance = true) {
    
    正确答案是:

    if (checkBalance === true) {
    
    同样适用于

    if(isActive = false) {
    
    正确答案是:

    if(isActive === false) {
    

    =是赋值,==用于检查,更改为==,==用于检查等式和类型

       if (checkBalance = true) {
    

    关于语法错误,你已经得到了很好的回答。关于“是否有更好的方法”,不需要使用
    ===
    true
    false
    进行相等性检查,因为在
    if
    条件中已经暗示了true/false。您可以将其本身用作变量。此外,由于它是一个只能为真或假的布尔值,因此使用
    if
    然后使用
    else
    完全可以。如果和如果,则无需执行

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

    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;
    }
    

    您的思路是正确的,确实可以在另一条语句中编写
    if语句。但是,您缺少了一个括号,您检查平等性的方式应该有所不同。我编辑了您的代码,以便解释:

    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:较短的if语句

    您可以省略
    =true
    部分,因为
    checkBalance
    已经是布尔值。这意味着它已经是
    true
    false
    ,这是
    if语句接受的值。这是我的第二次编辑,也是最重要的一次

    编辑2:检查是否相等

    在代码中,在
    if语句中使用
    =true
    。不幸的是,只使用一个
    =
    符号并不能检查是否相等,而是需要您指定值。当赋值如
    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");
        }
      }
    }
    

    =
    是分配。为了测试相等性,请使用
    ===
    您的思路是正确的,我添加了一个答案,并做了一些解释。条件语句@ניר㜑ף中可能重复的=is assign===is compare请阅读。我不确定此代码是否正确。当帐户同时处于活动状态和未处于活动状态时,可以使用
    handleIsActive()
    。另外,您还保留了if(balance=0)
    ,这是if语句中的赋值。@NocNit哎呀,肯定犯了这些错误。谢谢你把它们拿出来