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"
尝试通过 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"