簡體   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