2016-04-12 6 views
-1

入れ子のifループ(& &演算子を使用するのと同じです)を取得しますが、このコードでは条件なしで実行し、else文だけ戻す条件をどのように知っていますか?そのうちの1つは、ネストされたif文の中にあります。私はそれが明らかになぜこのように機能するのかを知ることができます、私はちょうど方法を取得しません。また、私は複数の条件をテストするより読みやすい方法でこれを書く方法を知っています。このコードで何が起こっているのかをここで説明してください。 「あなたは年を取っていますか」、「あなたは若すぎますか」ということをどのように知っていますか?ネストされたif文内のelse文。このコードは、実行するelse文をどのように知っていますか?

var age = prompt("Please enter Your age here :"); 
var min_age=18; 
var max_age=40; 

if(age>=min_age){ 
if(age<=max_age){ 
    console.log("You meet the requirements for this competition"); 
}else{ 
    console.log("You are too old"); 
} 
}else{ 
console.log("You are too young"); 
} 
+3

*どのようにこのコードを実行するために、他のどの文の知っているん*中括弧?。 –

+0

年齢がmin_ageより大きいか等しい場合>(年齢がmax_age以下の場合>要件を満たしている; else>あなたが古すぎる)else>あなたは若すぎます。ちょうどコードを読んでください。 –

+0

他の言葉を入れてください: 'else else'をラップすることが最初に実行されます。年齢が__under_18の場合、それは 'else'を実行し、あなたが若すぎると言うでしょう。それ以外の場合は、次の 'else else'に進み、前のものを忘れてしまいます。年齢が40歳未満の場合、あなたは要件を満たしていると言い、それ以上は何もしません。さもなければ、現在の 'if'にバインドされた' else'を実行し、あなたが古すぎると言っています。しかし、本当に皆さんが参加できるようにすべきです。差別はない。 – blex

答えて

0

if-then-elseのあいまい性は、長い間知られています。 elseが最初のifと一致することをすべての言語が解決しました。if文が定義されて

::だから:Nisarのreuestによって

if (a) { 
    if (b) { 
     x = 1; 
    } 
    else { 
     x = 2; 
    } 
} 

EDIT

if (a) 
    if (b) 
     x = 1; 
else 
    x = 2; 

はに解決

if (<condition>) <statement> [else <statement>] 

このことは、<statement>で上記はまた、 if声明。ですから、例えば:各else部分はオプションです

if (<condition>) if (<condition>) [else <statement>] [else <statement>] 

として、それは、それが属するifelse一部を見たとき、コンパイラが知る方法はありません。この問題を解決するために、elseが常に最初のifと一致するようにを定義しています。人は十分に古いです -

+0

明確な答え。ありがとうございました。 – dannymac

+0

@nisar:答えに追加を参照してください。それはあなたを助けますか? –

0

まず、のインデントあなたのコードをしましょう。

var age = prompt("Please enter Your age here :"); 
var min_age = 18; 
var max_age = 40; 

if (age >= min_age) 
{ 
    if (age <= max_age) 
    { 
     console.log("You meet the requirements for this competition"); 
    } 
    else 
    { 
     console.log("You are too old"); 
    } 
} 
else 
{ 
    console.log("You are too young"); 
} 

...

var age = prompt("Please enter Your age here :"); 

をオフに開始我々は

var min_age = 18; 
var max_age = 40; 

を初期化するので、age=21

、あなたは、プロンプトボックスにを入力しましょう次に最初のifの状態を見てみましょう。あなたが値を代入した場合

if (age >= min_age) 

、これは

if (21 >= 18) 

に変換したがって、これは、我々がもしブロック内ではなく、他に行く、本当です。 次の行はです。

if (age <= max_age) 

これは、これも本当です考慮

if (21 <= 40) 

に変換、我々はあなたがこの大会の要件を満たして印刷します。

これから最も重要なことは、コードをインデントし、残りの部分を非常にシンプルにすることです。

+1

ええ、それは別のチュートリアルから貼り付けられたコピーです。私はこのようなことは書かないだろう。ありがとう。 – dannymac

0

角括弧{}は制限を設定します。

擬似コードで考えると、文字を超えて何が起こっているのか考えてみてください。

ために読書:インデントが条件の限界を見るのを助けることができる方法

If you are old enough 
    If your are not too old 
    'You meet the requirements for this competition' 
    OTHERWISE 
    'You are too old' 
    END 
OTHERWISE 
    'You are too young' 
END 

注意。各くぼんだ部分は分けることができます。

+0

ええ、前にこのように書かれていることを見たことがない、私を捨てていた。擬似的なアプローチをしているはずです。ありがとう。 – dannymac

0

はわずか3オプション

  • 若すぎる
  • 正しい年齢
  • 古すぎる

最初のチェックがありますか?

if(age>=min_age) 

2番目のチェック - 人が古すぎますか?

if(age<=max_age) 

なステートメントがFALSEある場合は、この後に残された唯一の可能なオプション:

  • 古すぎる