2017-12-04 16 views
0

皆さん、私はJavascriptを学習中です。他の関数、特に引数部分の中に関数を持つことについて混乱しています。関数内のJavascript関数 - 引数について混乱しています

私は、誕生日を与えられた3人の退職までの年数を計算するためのレッスンのサンプルコードを含めました。私が混乱している何

は、関数yearUntilRetirement(名前、)内です。年齢を見つけるためにcalculateAge(yearOfBirth)機能で戻って見ているので、

が、この代わりにyearOfBirthではないでしょうか? また、この引数は現在の関数に固有のものですか?

function calculateAge(yearOfBirth) { 
    var age = 2016 - yearOfBirth; 
    return age; 
} 

function yearsUntilRetirement(name, year) { 
    var age = calculateAge(year); 
    var retirement = 65 - age; 
    console.log(name + ' retires in ' + retirement + ' years.'); 
} 

yearsUntilRetirement('John', 1990); 
yearsUntilRetirement('Mike', 1969); 
yearsUntilRetirement('Mary', 1948); 
+0

引数の型名は、型が同じであれば問題ありません。たとえば、年が文字列の場合は、問題が発生します。あなたは年を何か他のものに置き換えることができ、まだURコードは正常に動作します。 –

+1

これは一貫性の詳細です。言語の観点から言えば、変数の名前は位置によって決まります。最初の引数 'year'は、' yearOfBirth'と解釈される 'calculateAge'のスコープ内にあります。変数の命名は、理解を向上させます。 –

+0

あなたはスコープ(https://www.w3schools.com/js/js_scope.asp)を見てください。 – gromit190

答えて

1

多分これが明確になります。

yearsUntilRetirement(name, year)を呼び出すと、引数として2つの値を渡します。 yearsUntilRetirement("John", 1975)などです。そして、関数yearsUntilRetirementの内部では、yearの値を引数として他の関数calculateAgeが呼び出されます。 yearは値1975であるため、age = calculateAge(1975)となります。今、calculateAge関数内では、値1975yearOfBirthに対応する値です。だから、すべてを実行すると、var age = 2016 - 1975が得られます。

これがあまりにも抜け出せば、私はさらに明確にしようとします。必要な場合はコメントを削除してください。

+0

説明してくれてありがとう、ありがとう。私は与えるべき投票しか持っていない、そうでなければ私はそれをすべて手伝ってくれるだろう! – Pete

+0

問題ありません。ハッピーコーディング! – 0x2A