2017-03-24 222 views
-1

如何將if語句轉換爲switch case?我想聲明像這樣的變量:將if語句轉換爲switch/case

myAge = parseFloat(prompt("Enter you age: ")); 

if(myAge <18) { 
    alert("You cant not vote at this " +myAge); 
} else if (myAge >18) { 
    alert("Vote wisely, you are " +myAge "years old!"); 
} else { 
    alert("Invalid age"); 
} 
+7

如果'myAge == 18'? –

+3

除了@JonathonReinhart所說的,你爲什麼要把它作爲開關語句?當然你只有兩條路可以遵循?更正的if語句對我來說似乎是合理的。 – Steve

+0

是的請我想包括,但也有點混亂。請幫助 –

回答

1

給條件,如果年齡< 18, 你不能不在這個年齡

投票,如果年齡> = 18,你可以在這個年齡段的投票。

否則無效年齡。

var myAge = parseFloat(prompt("Enter you age: ")); 
 
switch (true) { 
 
    case myAge < 18: 
 
    alert("You cant not vote at this " + myAge); 
 
    break; 
 

 
    case myAge >= 18: 
 
    alert("Vote wisely, you are " + myAge + " years old!"); 
 
    break; 
 

 
    default: 
 
    alert("Invalid age"); 
 
}

+0

非常感謝,它非常完美,我非常感謝。 –

1

回答你的「我怎樣才能將其轉換轉」的問題,你可以實現一個功能,這使得C風格的比較,並返回-1,0或1作爲比較的結果。

以下示例使用setInterval來模擬多個不同情況。
這僅用於示例。

function compareTo(a, b) { 
 
    if (a < b) 
 
    return -1; 
 

 
    if (a > b) 
 
    return 1; 
 

 
    return 0; 
 
} 
 

 

 
function EvaluateAge() { 
 
    // Generate a random age between 10 and 40 
 
    var myAge = Math.floor((Math.random() * 30) + 10); 
 
    switch (compareTo(myAge, 18)) { 
 
    case -1: 
 
     console.log(myAge, " less than 18"); 
 
     break; 
 

 
    case 0: 
 
     console.log(myAge, " equal to 18"); 
 
     break; 
 

 
    case 1: 
 
     console.log(myAge, "more than 18"); 
 
     break; 
 
    } 
 
} 
 

 
// Example only 
 
setInterval(EvaluateAge, 1000);

另一種方法是用JS switch能力交換條件使用true

var myAge = 16; 
 
switch (true) { 
 
    case myAge < 18: 
 
    console.log("less than 18"); 
 
    break; 
 

 
    case myAge === 18: 
 
    console.log("equal to 18"); 
 
    break; 
 

 
    case myAge > 18: 
 
    console.log("more than 18"); 
 
    break; 
 
}

但是,它不看起來不錯,避免這種用法是個好主意。

其實,你的if看起來不錯,你不需要將它轉換爲switch - 它不會增加你的代碼的可讀性/可維護性。

+0

我對你的例子做了一個小的補充,它增加了一個'interval',它模擬了switch語句的多個調用。如果您認爲這是令人捲土重來的,請隨時恢復。 – Zze

0

不知道爲什麼你會想,如果語句來做到這一點而不是簡潔,但你可以像這樣:

var myAge = parseFloat(prompt("Enter you age: ")); 
 
switch (true) { 
 
    case myAge < 18: 
 
    alert("You cant not vote at this " + myAge); 
 
    break; 
 

 
    case myAge > 18: 
 
    alert("Vote wisely, you are " + myAge + " years old!"); 
 
    break; 
 

 
    default: 
 
    alert("Invalid age"); 
 
}

注意,你是不是獲取的值18我只是假設它是故意的,但值得指出,並且,您還錯過了連接第二條警報的+,因此您的原始示例甚至不會執行。