我正在这里用这个代码挣扎。在CodeAcademy上工作,我遇到了令我困惑的小事。如您所见,我首先检查computerChoice是否小于或等于0.33。然后我检查计算机选择是否小于或等于0.66,并用最终的else语句结束。
但是不应该以某种方式崩溃或干扰,因为你可以看到,else和else以及if都会将computerChoice变量设置为所需的字符串,具体取决于随机数是什么。但是,由于0.23小于0.66,而0.23小于0.33,因此if语句都应将变量设置为自己的特定字符串。
为什么这实际上有用,当我认为它不应该。这只是JavaScript的方式吗?第一个if语句会覆盖即将发布的语句吗?
var userChoice = prompt("Do you choose rock, paper or scissors?");
var computerChoice = Math.random();
if (computerChoice <= 0.33){
computerChoice = "rock";
}else if(computerChoice <=0.66){
computerChoice = "paper";
}else{
computerChoice = "scissors";
}
感谢所有希望即将到来的帮助:)
答案 0 :(得分:3)
else if
部分仅在if
条件为假时才会被评估。所以没有冲突,当你有一系列if...else if...else if...else
时会使用第一个匹配条件。
所以在0.22
案例中,因为
if (computerChoice <= 0.33)
评估true
,未检查else if
或else
条件。 Control进入与if
关联的块,并将变量的值设置为"rock"
。
在0.44
情况下(例如),因为if
条件评估为false,else if (computerChoice <= 0.66)
被测试 - 并且因为它评估为true,所以与关联的块输入,变量的值设置为"paper"
。
如果所有值均高于0.66
,则前两个条件都会评估为false,因此输入与最终else
关联的块并将值设置为"scissors"
。
答案 1 :(得分:1)
如果else
子句匹配,if..else
语句的if
子句不会执行。
换句话说,if..else
中的一个且仅有一个代码块被执行,其余的则不执行。
答案 2 :(得分:0)
因为在第二个语句中使用了else而不会产生问题
else if(computerChoice <=0.66){
computerChoice = "paper";
这也隐含地意味着computerChoice是&gt; 0.33。 它会在这样的情况下产生问题:
if(computerChoice <=0.66){
computerChoice = "paper";
else if(computerChoice <= 0.33)
computerChoice = "rock";
那是因为它永远不会输入else语句,就好像computerChoice是&lt; = 0.66它也总是显然&lt; = 0.33