JS 的意外提示行为

Unexpected prompt behavior with JS

尝试通过 Javascript 创建一个 black jack 模拟器作为增加我的 JS accumen 的练习(几周前开始编码)。

为了尝试让它变得简单和自包含(在 JS 中,没有 html)我尝试使用提示来模拟动作和响应。

function action(){
    var response = prompt("What would you like to do \nInput 1 for Draw Card \nInput 2 for Play hand");
    if(response !== 1 || response !== 2){
        action();
    }
}

所以,我的问题是,为什么当我输入 1 或 2 时,这会继续重复。我认为如果输入 1 或 2,则不会发生任何事情。我想这可能是因为提示将变量保存为字符串,所以我将 1 和 2 更改为“1”和“2”,但这并没有解决问题。我确定我遗漏了一些非常简单的东西。任何帮助都会很棒。

prompt 函数的结果总是一个字符串,strict comparison === 的字符串和数字类型当然会产生错误:

"1" === 1 // false

你的逻辑是错误的。 "1" 匹配,因为它不同于 "2""2" 匹配,因为它不同于 "1",其他匹配,因为它们不同于 "1""2" .

相反,您应该使用 AND 运算符:

response !== "1" && response !== "2"