为什么无论用户输入如何,我的程序总是打印第一个条件?
Why does my program always print the first condition regardless of user input?
我正在制作一个程序,该程序在执行时应该 select 基于用户输入的两个数组之一,然后从该数组打印出一个随机变量到控制台。
当程序是 运行 时,当我在 shell 提示中输入 no
时,它会正确打印出 arrayOneSelect
。但是,当我在 shell 提示符中输入 yes
时,arrayTwoSelect
不打印。相反,程序 select 是输入 no
的条件并打印 arrayOneSelect
。当我输入任何其他内容时,也会发生同样的事情——程序仍然是 select 的第一个条件并打印 arrayOneSelect
。
谁能告诉我为什么会这样?
var arrayOne= ["Hello", "Goodbye", "How are you?", "What's happening?", "See you later"];
var arrayTwo= ["Dog", "Cat", "Duck", "Goose"];
var arrayOneSelect= arrayOne[Math.floor(Math.random() * (arrayOne.length))];
var arrayTwoSelect= arrayTwo[Math.floor(Math.random() * (arrayTwo.length))];
var select= prompt("Ready for an adventure?");
if(select= "no") {
console.log(arrayOneSelect);
}
else if(select= "yes") {
console.log(arrayTwoSelect);
}
else {
console.log("Try again!");
}
您需要使用双等号或三等号进行比较。在这种情况下,双等号就可以了,因为它们是同一类型。
但是,最好使用三等号,因为它不会尝试转换类型。参见:JavaScript Comparison Operators
试试这个:
var select= prompt("Ready for an adventure?");
if(select === 'no') {
console.log(theKicker);
}
else if(select === 'yes') {
console.log(fieldGoal);
}
else {
console.log("That's not the way! Try again!");
}
您的代码未按预期工作的原因是因为赋值时使用了单个相等,并且在 javascript 中非空变量是真实的,因此您只会遇到第一个 if 语句。
您的 if 语句正在分配给变量,而不是检查它。
你想做if(select == 'no')
当您执行 if(select = 'no')
时,您将 'no'
分配给 select
变量,而在 javascript 中任何不是 null
、undefined
,或者 false
是真实的(意味着它被解释为 true
)
虽然在这种情况下 ==
很好,但最好使用 ===
参见 Equality comparisons and sameness
您的 if
和 else if
语句目前没有检查比较。单个 =
用于变量赋值。也就是说,您将 select
设置为等于 "no"
和 "yes"
.
如果要真正检查比较,则需要使用三等号进行比较。这是更新的代码:
var arrayWoes = ["Ah what a buzzkill", "How dare you", "You are the worst", "I fart in your general direction", "How about you get out of town"];
var arrayYes = ["You marvelous user", "You must be pretty great. Welcome to the fold.", "You are true of heart and steady of mind", "You're just a good one, aren't you?"];
var theKicker = arrayWoes[Math.floor(Math.random() * (arrayWoes.length))];
var fieldGoal = arrayYes[Math.floor(Math.random() * (arrayYes.length))];
var select = prompt("Ready for an adventure?");
if(select === "no") {
console.log(theKicker);
}
else if(select === "yes") {
console.log(fieldGoal);
}
else {
console.log("That's not the way! Try again!");
}
我还建议您在变量和等号运算符之间为变量赋值 space。编写始终如一的干净、易于理解的代码通常是一种很好的做法。
我正在制作一个程序,该程序在执行时应该 select 基于用户输入的两个数组之一,然后从该数组打印出一个随机变量到控制台。
当程序是 运行 时,当我在 shell 提示中输入 no
时,它会正确打印出 arrayOneSelect
。但是,当我在 shell 提示符中输入 yes
时,arrayTwoSelect
不打印。相反,程序 select 是输入 no
的条件并打印 arrayOneSelect
。当我输入任何其他内容时,也会发生同样的事情——程序仍然是 select 的第一个条件并打印 arrayOneSelect
。
谁能告诉我为什么会这样?
var arrayOne= ["Hello", "Goodbye", "How are you?", "What's happening?", "See you later"];
var arrayTwo= ["Dog", "Cat", "Duck", "Goose"];
var arrayOneSelect= arrayOne[Math.floor(Math.random() * (arrayOne.length))];
var arrayTwoSelect= arrayTwo[Math.floor(Math.random() * (arrayTwo.length))];
var select= prompt("Ready for an adventure?");
if(select= "no") {
console.log(arrayOneSelect);
}
else if(select= "yes") {
console.log(arrayTwoSelect);
}
else {
console.log("Try again!");
}
您需要使用双等号或三等号进行比较。在这种情况下,双等号就可以了,因为它们是同一类型。
但是,最好使用三等号,因为它不会尝试转换类型。参见:JavaScript Comparison Operators
试试这个:
var select= prompt("Ready for an adventure?");
if(select === 'no') {
console.log(theKicker);
}
else if(select === 'yes') {
console.log(fieldGoal);
}
else {
console.log("That's not the way! Try again!");
}
您的代码未按预期工作的原因是因为赋值时使用了单个相等,并且在 javascript 中非空变量是真实的,因此您只会遇到第一个 if 语句。
您的 if 语句正在分配给变量,而不是检查它。
你想做if(select == 'no')
当您执行 if(select = 'no')
时,您将 'no'
分配给 select
变量,而在 javascript 中任何不是 null
、undefined
,或者 false
是真实的(意味着它被解释为 true
)
虽然在这种情况下 ==
很好,但最好使用 ===
参见 Equality comparisons and sameness
您的 if
和 else if
语句目前没有检查比较。单个 =
用于变量赋值。也就是说,您将 select
设置为等于 "no"
和 "yes"
.
如果要真正检查比较,则需要使用三等号进行比较。这是更新的代码:
var arrayWoes = ["Ah what a buzzkill", "How dare you", "You are the worst", "I fart in your general direction", "How about you get out of town"];
var arrayYes = ["You marvelous user", "You must be pretty great. Welcome to the fold.", "You are true of heart and steady of mind", "You're just a good one, aren't you?"];
var theKicker = arrayWoes[Math.floor(Math.random() * (arrayWoes.length))];
var fieldGoal = arrayYes[Math.floor(Math.random() * (arrayYes.length))];
var select = prompt("Ready for an adventure?");
if(select === "no") {
console.log(theKicker);
}
else if(select === "yes") {
console.log(fieldGoal);
}
else {
console.log("That's not the way! Try again!");
}
我还建议您在变量和等号运算符之间为变量赋值 space。编写始终如一的干净、易于理解的代码通常是一种很好的做法。