1

私は switch ステートメントに取り組んでおり、このコードをここで機能させようとしていますが、正しい console.log ケース文字列を出力していないようです。

var user = prompt("What is your name?").toLowerCase();
switch(user){
    case "luka":
    console.log("What a beautiful name, my name is exactly the same :) Hi Luka! :D");
    break;

    case user.length > 10:
    console.log("That's a long name!");
    break;

    case user.length < 4:
    console.log("Not to be rude or impolite to you in any way, but your name is kinda       short :( Not that it isn't cool or something :D");
    break;

}

この (user).length < 4 のようにユーザーの周りに括弧を入れてみましたが、うまくいきません。これを正しく実装する方法を知っている人はいますか?

4

3 に答える 3

4

switch ステートメントでは条件を使用しないでください。

if/else if を使用

var user = prompt("What is your name?").toLowerCase();
if (user==="luka") {
    console.log("What a beautiful name, my name is exactly the same :) Hi Luka! :D");
} else if (user.length > 10) {
    console.log("That's a long name!");
} else if (user.length < 4) {
    console.log("Not to be rude or impolite to you in any way, but your name is kinda       short :( Not that it isn't cool or something :D");
} else {
    console.log("in else");
}
于 2013-03-07T14:59:25.020 に答える
2

あなたのような場合に使用するための1つの可能な回避策がありswitchます:

var user = prompt("What is your name?").toLowerCase();
switch (true) {
    case (user === "luka"):
        console.log("What a beautiful name, my name is exactly the same :) Hi Luka! :D");
        break;

    case (user.length > 10):
        console.log("That's a long name!");
        break;

    case (user.length < 4):
        console.log("Not to be rude or impolite to you in any way, but your name is kinda       short :( Not that it isn't cool or something :D");
}

ただし、@ epascarelloのアドバイスに従い、if/elseブロックを使用します。

于 2013-03-07T15:02:28.040 に答える
2

それは、JavaScriptswitchステートメントがどのように機能するかだけではありません。「ケース」式の値は、switch式の値と比較されます。

そこにあるステートメントは次と同等です。

if (user === "luka") {
    console.log("What a beautiful name, my name is exactly the same :) Hi Luka! :D");
}
else if (user === (user.length > 10)) {
    console.log("That's a long name!");
}
else if (user === (user.length < 4)) {
    console.log("Not to be rude or impolite to you in any way, but your name is kinda       short :( Not that it isn't cool or something :D");    
}

したがって、「user」の値をそれらの値と比較した結果と比較user.lengthしています。これらの比較結果はブール値であるため、「使用」することはありません===

于 2013-03-07T15:00:28.683 に答える