-2

私はここでこのコードに苦労しています。CodeAcademyに取り組んでいて、私を困惑させるこの小さなことに遭遇しました。ご覧のとおり、最初にcomputerChoiceが0.33以下かどうかを確認します。次に、コンピューターの選択が0.66以下であるかどうかを確認し、最後のelseステートメントですべてを終了します。

ただし、このクラッシュや何らかの干渉が発生しないようにする必要があります。ご覧のとおり、else ifと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";
}

うまくいけば今後の助けをありがとう:)

4

3 に答える 3

3

条件が falseの場合にのみ、else ifパーツが評価されます。ifしたがって、競合はありません。一連の がある場合、最初に一致する条件が使用されますif...else if...else if...else

この0.22場合、

if (computerChoice <= 0.33)

または条件trueのいずれもチェックされません。制御は に関連付けられたブロックに入り、変数の値を に設定します。else ifelseif"rock"

この0.44場合 (たとえば)、if条件が false と評価されるため、else if (computerChoice <= 0.66)がテストされ、true と評価されるため、それに関連付けられたブロック入り、変数の値が に設定され"paper"ます。

上記のすべての値の場合0.66、最初の 2 つの条件の両方が false と評価されるため、final に関連付けられたブロックにelse入り、値を に設定します"scissors"

于 2013-03-06T16:11:16.053 に答える
1

句が一致した場合、ステートメントのelse句は実行されません。 つまり、内部のコード ブロックの 1 つだけが実行され、残りは実行されません。if..elseif
if..else

于 2013-03-06T16:11:39.963 に答える
0

2番目のステートメントでelseを使用しているため、問題は発生しません

else if(computerChoice <=0.66){
    computerChoice = "paper";

これはまた、computerChoice が > 0.33 であることを暗黙的に意味します。次のような場合に問題が発生します。

if(computerChoice <=0.66){
    computerChoice = "paper";
else if(computerChoice <= 0.33)
    computerChoice = "rock";

これは、computerChoice が <= 0.66 であるかのように、else ステートメントに入ることは決してないためです。また、明らかに常に <= 0.33 です。

于 2013-03-06T16:21:40.083 に答える