为什么我的程序总是打印第一个条件而不管用户输入?

时间:2015-05-30 23:07:02

标签: javascript arrays if-statement console.log

我正在编写一个程序,在执行时应该根据用户输入选择两个数组中的一个,然后将该数组中的随机变量打印到控制台。

当程序运行时,当我将arrayOneSelect输入shell提示符时,它会正确打印出no。但是,当我在shell提示符中输入yes时,arrayTwoSelect不会打印。相反,程序选择输入no的条件并打印arrayOneSelect。当我输入其他内容时,同样的事情发生 - 程序仍然选择第一个条件并打印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!");

}

3 个答案:

答案 0 :(得分:4)

您需要使用double或triple equals进行比较。在这种情况下,双等于将,因为它们是相同的类型。

但是,最好使用三等于,因为它不会尝试转换类型。请参阅: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中一个非null变量是真实的,所以你只是碰到你的第一个if语句。

答案 1 :(得分:3)

你的if语句分配给变量,而不是检查它。

你想做if(select == 'no')

当您执行if(select = 'no')时,您将'no'分配给select var,并在javascript中分配任何非nullundefined或{{1}的内容是真实的(意思是它被解释为false

虽然在这种情况下true没问题,但最佳做法是==使用Equality comparisons and sameness

答案 2 :(得分:2)

您的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!");

   }

我还建议你为变量赋值给变量和equals运算符之间的空格。编写一致的干净,易懂的代码通常是一种很好的做法。