2017-02-24 10 views
0

私はJavaScriptよりも「新しい」ので、ifを関数に入れるときに何かを追加する必要があるかどうか疑問に思っていました。これは私のコードです。ある機能を使用して、そのページに警告する別の機能を呼び出すことができるようにしたい。Javascript:ifを関数に入れるときに、追加する必要があるものはありますか?

function Function() { 
    var var1 = Math.floor((Math.random() * 10) + 1); 
    document.getElementById("paragraph1").innerHTML = var1; 
    Functions(); 
} 

function Functions() { 
    if (var1 == 1) { 
    Question1(); 
    } 
} 

function Question1() { 
    alert("works"); 
} 

ありがとうございました!

+3

可変範囲について少し勉強する必要があります。 'Function'の' var1'は 'Functions'から到達できません。 JSがダイナミックなスコープを持っていればそれはありますが、そうではありません。 –

+0

いいえ、 '関数'は 'var1'にアクセスできません。 'Function'から引数として渡す必要があります。 – adrice727

+0

コンストラクタでない限り、funcを大文字にしないことも慣例です – pixelearth

答えて

1

問題はifではなく、可変スコープで表示されます。

varで宣言された変数は、関数に対してローカルなので、別の関数からアクセスすることはできません。値を引数として他の関数に渡す必要があります。変数のスコープについて

function Function() { 
    var var1 = Math.floor((Math.random() * 10) + 1); 
    document.getElementById("paragraph1").innerHTML = var1; 
    Functions(var1); 
} 

function Functions(var2) { 
    if (var2 == 1) { 
    Question1(); 
    } 
} 

function Question1() { 
    alert("works"); 
} 
0

クイックレッスン:変数のみFunctions変数var2のあなたの定義では、彼らはそのための

で定義されている範囲内に存在するが未定義されるだろう。

2つの溶液

  1. Functionsを呼び出すとき、すなわち、Functions(var2)のようなパラメータによってVAR2を渡すパラメータによって変数を渡し、そしてキャッチ
  2. がグローバルvar2の定義関数本体内の値なので、両方の機能値を見ることができます。しかし、これはしばしば悪い練習とみなされます。
関連する問題