【问题标题】:Unexpected prompt behavior with JS [duplicate]JS的意外提示行为[重复]
【发布时间】:2016-01-08 07:53:04
【问题描述】:

尝试通过 Javascript 创建一个黑杰克模拟器作为提高我的 JS 敏锐度的练习(几周前开始编码)。

为了尝试使其简单且自包含(在 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”,但这并没有解决问题。我确定我错过了一些非常简单的东西。任何帮助都会很棒。

【问题讨论】:

    标签: javascript prompt


    【解决方案1】:

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

    您应该使用 AND 运算符:

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

    【讨论】:

    • 这是有道理的。这解决了它,我会在早上标记回答。我要睡了!感谢您的帮助。
    【解决方案2】:

    prompt 函数的结果始终是 String,String 和 Number 类型的 strict comparison === 当然会产生 false:

    "1" === 1 // false
    

    【讨论】:

    • 就像我在上面的问题中所说,我尝试使用以下内容:if(response !== "1" || response !== "2"){
    • @JosephErickson !== 是严格相等,!= 是松散相等运算符。你只是在否定它们,但它们仍然是严格的,所以:response !== "1"!(response === "1") 相同。
    • 这与比较的类型无关,问题是他的逻辑。
    • @Barmar 当然有。这是问题的一半。第二部分是逻辑,同意。但是如果没有正确的比较,它也不会起作用。
    猜你喜欢
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多