6

My question is this: I'm new to JavaScript, I am trying to understand the difference between the " if { " and " else if { " statements. Thus far the only answers I have found are related to someone inheriting my code later, obviously no one is ever going to inherit my class project! My question specifically is this:

I am doing the rock paper scissor game project on codecademy. My Math.random() method produces a random number. I first implemented my code if (computerChoice <= 0.33){

and its alternative as:

if (computerChoice > 0.67){......    Which checked out and produced a viable answer. 

In its suggestion however it used the else if statement. My specific question is in either situation I essentially set a low range and a high range, leaving else to represent the middle. Else means not the previous condition. But if my condition for a second if already logically excludes the previous answer (which would have to be logically excluded in the else if alternative anyway) what exactly is the difference and why use else if/ when would else if be necessary?

My code follows:

Option one (else if):

var userChoice = prompt("do you want rock paper or scissors?");
var computerChoice = Math.random();

if (computerChoice <= 0.33){
  computerChoice = "rock";
}
else if (computerChoice >= 0.67){
 computerChoice = "scissors";
}
else {
 computerChoice = "paper";
}

console.log(computerChoice);

Option two (2 if's):

var userChoice = prompt("do you want rock paper or scissors?");
var computerChoice = Math.random();

if (computerChoice <= 0.33){
 computerChoice = "rock";
}
if (computerChoice >= 0.67){
 computerChoice = "scissors";
}
else {
 computerChoice = "paper";
}

console.log(computerChoice);
4

3 に答える 3

1

同じ変数(またはそのようなもの)のさまざまな条件をチェックしている場合は、それ以外の場合の方が高速です。条件に一致する場合は、実行され、ステートメントで完了します。if ステートメントがたくさんあるということは、最初のステートメントが true であるかどうかに関係なく、コードがすべての if ステートメントを実行しなければならないことを意味します。ただし、「else if」を使用すると、一致する条件の 1 つだけを探す必要があることに注意してください。その後も何かをチェックしたい場合は、別の 'if' ステートメントにする必要があります。

于 2013-08-08T22:08:28.250 に答える
0

しかし、私の条件 if がすでに前の回答を論理的に除外している場合 (else if 代替で論理的に除外する必要があります)、正確には何が違い、なぜ else if/ を使用するのですか?

=> なし。ただし、「論理的除外」を間違えた場合に備えて、else ステートメントによって強制されます。

質問の範囲外であっても、JavaScript には「else if」構造がないことにも注意してください。あなたが書くとき:

if (...) {

} else if (...) {

}

あなたが基本的にやっていることは次のとおりです。

if (...) {

} else {
  if (...) {

  }
}

else キーワードの後に​​任意のステートメントを渡すことができるため、機能します。http://www.ecma-international.org/ecma-262/5.1/#sec-12.5を参照してください:-)

更新 1

if (weight <= 130) {
  fighter = "lightweight";
} else if (weight >= 205) {
  fighter = "heavyweight";
} else {
  fighter = "middleweight";
}

これは、javascript では次と同等です。

if (weight <= 130) {
  fighter = "lightweight";
} else {
  if (weight >= 205) {
    fighter = "heavyweight";
  } else {
    fighter = "middleweight";
  }
}

更新 2

元の投稿、オプション 2 では、次のことを行います。

if (computerChoice <= 0.33){
  computerChoice = "rock";
}

if (computerChoice >= 0.67){
 computerChoice = "scissors";
}
else {
  computerChoice = "paper";
}

computerChoice が <= 0.33 の場合、次のようになります。

if (0.33 <= 0.33) ... // => computerChoice = "rock"

if ("rock" >= 0.67) ... else [THE ELSE PART IS EXECUTED!]

したがって、基本的に computerChoice は、「岩」であるべきときはいつでも「紙」になります。67% の確率で「紙」、33% の確率で「はさみ」を持っています。これは、Javascript が異なるタイプの値 (つまり、ここでは文字列 "rock" と数値 "0.67") を比較しようとしてもエラーをスローしないために発生します。代わりに、魔法のような方法で同じタイプの値を変換しようとします。強制ルール ( http://webreflection.blogspot.be/2010/10/javascript-coercion-demystified.html ) を入力してから、喜んで "false!" と答えます。 true = false であることを JavaScript で証明できるルール...

PS: ケビン・ニールセンが私よりもうまく説明していることに気付きました。どうぞ!

于 2013-08-08T22:27:33.800 に答える