まず例を示します。この関数の機能は、配列要素の合計を返すことです
。 変数合計 = 0; for(var i = 0,aLength = arr.length;i < aLength;i++) { 合計 += arr[i]; } return sum; }
キーワードfunction
の後にスペースがあります。 sumArray
の命名規則は変数名と同じです。文字、数字、アンダースコア、およびドル記号のみを含めることができます。数値であり、キーワードにすることはできません。
括弧内のパラメータは、仮パラメータとも呼ばれ、パラメータ名のみを必要とします。パラメータは、 ,
で区切られた0
、 1
またはそれ以上の値であり、 {}
には関数の本体が含まれます。 1 つ以上のステートメントが含まれます。関数本体は、関数の機能を実装するために使用されます。
キーワードreturn
の後には関数の戻り値が続きますが、関数には戻り値がない場合もあります。関数の実行が終了すると、ステートメント「 return
実行を終了し、 return
より下のステートメントは実行されなくなります。戻り値は関数の出力です。
この方法で定義された関数は、関数とその関数を呼び出すステートメントが同じソース ファイル内にある限り、関数定義の前後の両方で呼び出すことができます。
、式を使用して関数を定義します。つまり、代入式を使用して関数を変数に代入します。これは、実際には関数を変数として扱います。このとき、関数には名前を付けることも、名前を付けないこともできます。名前のない関数は、匿名関数と呼ばれます。
var funct = function getMax(a,b) { return a>b?a:b; };//変数を定義しているため、この後のセミコロンは省略できないことに注意してください。
関数ステートメントでの定義とは異なり、関数は関数定義ステートメントの後でのみ呼び出すことができます。また、呼び出し時には、変数名funct
のみを使用でき、関数名getMax
使用できません (例:
var funct = function getMax(a,b) { a>b?a:b を返します。 }; console.log(funct(1,2));//出力 2
function
の直後のパラメータ リストです。var funct = function(a,b) { return a>b?a:b; };
この関数には名前がないので、変数funct
に割り当てられます。同様に、この関数はこのステートメントの後でのみ呼び出すことができます。
var funct = function(a,b) { return a>b?a:b; }; console.log(funct(1,2));//
出力の概要 2: 式を使用した関数の定義は、一度定義するとすぐに使用できます。
4
番目のトレーニングでは、オブジェクトが独自のメソッドを持つことができることを紹介しました。もちろん、これも関数です。この関数の呼び出しは、前の 2 つのレベルで定義された関数とは少し異なります。
//関数の定義: 3 つの数値の最大値を求める function max(a,b,c) { if(a > b) { if(a > c) を返します。 それ以外 cを返します。 } それ以外 { if(b > c) bを返します。 それ以外 cを返します。 } } //この関数を呼び出します var result = max(1,2,3);//結果は 3 console.log(result);//出力3
関数を呼び出すときは、仮パラメータと同じ数の特定の値を渡す必要があります。上記の関数にはパラメータが3
あるため、以下を呼び出すときは、特定の値を3
渡します。値、 1
パラメータa
に渡され、 2
パラメータb
に渡され、 3
パラメータc
に渡されます。関数の戻り値は、代入記号=
介して変数result
に渡されます。関数本体にreturn
キーワードがない場合は、 undefined
が返されます。
オブジェクト内で定義された関数の呼び出し:
var ob = { ID:1、 getMax:function(a,b) { a>b?a:b を返します。 } }; var result = ob.getMax(2,1);//結果の値は 2 var result1 = ob["getMax"](2,1);//result1 の値も 2 です
。上記は、関数を見つけるには、对象名.函数名
または对象名["函数名"]
を使用する必要があることです。その他は同じです。
ほとんどのプログラミング言語では、関数呼び出し時に渡される実パラメータの数と型がチェックされますが、 JavaScript
実パラメータの型も数もチェックされません。
JavaScript
の実パラメータは、左から右の順に仮パラメータと一致します。次に例を示します。
function myFunction(a,b,c) { コンソール.ログ(a); コンソール.ログ(b); console.log(c); } myFunction(1,2,3);
実パラメータ1
仮パラメータa
3
渡され、実パラメータ2
仮パラメータb
に渡されます。仮パラメータc
。 実パラメータの数が仮パラメータより少ない場合、 undefined
値が右側の仮パラメータに渡されます。例:
function myFunction(a,b,c) { コンソール.ログ(a); コンソール.ログ(b); console.log(c); } myFunction(1,2);
実パラメータ1
は仮パラメータa
に渡され、実パラメータ2
仮パラメータb
に渡され、 undefined
仮パラメータc
に渡されます。 右側のパラメータにのみデータを渡したい場合は、最初のいくつかの実パラメータにundefined
を渡すことができます。例:
function myFunction(a,b,c){ console.log(b); console.log(c);
上記の 2 つのメソッドは
、厳密には、 undefined
値が渡される可能性がある仮パラメータにデフォルト値を設定することがベスト プラクティスです。例:
function getSum(a,b,c) { if(c === 未定義) c = 0; console.log(a+b+c); } myFunction(1,2);
JavaScript
arguments
がオブジェクトであり、実際のパラメータもオブジェクトです。 (実際の配列ではなく配列のようなもの)、実際のパラメータは左から右にarguments[0]、arguments[1]...
であり、 arguments.length
実際のパラメータの数を表します。
//パラメータの合計を求める function getSum() { var aLength = 引数.長さ; 変数合計 = 0; for(var i = 0;i < aLength;i++) { 合計 += 引数[i]; } return sum; } console.log(getSum(1,2,3,4,5))//出力 15.
ここでの仮パラメータは直接省略され、 arguments[i]
で表されます。
複雑なJavaScript
開発者は各実パラメータと仮パラメータの対応を確認する必要があり、非常に非効率的です。良い解決策は、オブジェクトをパラメータとして使用することです。関数はオブジェクトのプロパティ名に基づいてパラメータを操作します。
関数 myFunction(obj) { console.log(obj.name); obj.number++; return obj.number; } myObj = {name:"myObj",number:34}; myFunction(myObj);//myObj console.log(myObj.number);//出力 35
関数 (記述の便宜上、 a
と呼ばb
ますb
原則として、関数b
独自の関数本体で関数a
を呼び出すため、関数a
の名前を実パラメータとして関数b
に渡す必要があります。
//最大値を求める関数 getMax(a,b)
{
return a>b?a:b; } //最小値を求める関数 getMin(a,b) { return a<b?a:b; } //次の関数は関数をパラメータとして受け取り、最終的に値を返します function getM(func,num1,num2) { return func(num1,num2); } getM(getMax,1,2);//Return 2 getM(getMin,1,2);//Return 1
関数a
の名前 ( getMax
またはgetMin
) を関数b
に渡します。 ( getM()
)、渡されたa
関数をb
関数内で呼び出して、関連する結果を取得します。