为什么无论用户输入如何,我的程序总是打印第一个条件?

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 中任何不是 nullundefined,或者 false 是真实的(意味着它被解释为 true

虽然在这种情况下 == 很好,但最好使用 === 参见 Equality comparisons and sameness

您的 ifelse 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。编写始终如一的干净、易于理解的代码通常是一种很好的做法。