簡體   English   中英

為什么“if”有效,而“switch”無效?

[英]Why “if” works but “switch” doesn't work?

// It is simple code

var num = prompt("put number");
// This way is not worked 
switch (num) {
    case num > 0:
        console.log("num++");
        break;
    case num < 0:
        console.log(num-2);
        break;
}
// But this worked
if (num > 0){
    console.log(num++);
} else if (num < 0){
    console.log(num -2);
}

我的第一種“switch”方法不起作用,但“if”方法有效。

我嘗試了所有更改代碼或其他方式的方法,但結果相同。

請大家幫幫我。

因為case里面的語句num > 0將返回truefalse 如果你這樣做:

switch (true) {
    case num > 0:
        console.log("num++");
        break;
    case num < 0:
        console.log(num-2);
        break;
}

它會起作用的。

案例不能是表達式,您必須先規范化您的輸入。

盡管在case中放置表達式是有效的,但在這種情況下,一種更可靠的處理方法是首先規范化您的輸入。

您可以確定方向,例如:

 var num = parseInt(prompt("put number"), 10); var direction = num < 0? -1: 1; switch (direction) { case 1: console.log("num++"); break; case -1: console.log(num - 2); break; }

該開關充當案例切換器,這意味着您無法進行比較來創建案例,只能逐個列出案例,並從該案例中執行一些 function。 if / else 結構適合進行比較,因為 if 調用中的預期結果始終是 boolean。

例子:

const a = 1;

if (a === 1) {
    console.log('hello');
} else {
    console.log('sad');

switch (a) {
    case 1 : console.log('hello'); break;
    default: console.log('sad'); break;

在您的情況下,我建議使用 if/else if/else,因為更推薦使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM