JavaScript 関数は、パラメータの値(引数)のチェックを行いません。
このチュートリアルの前段で、関数はパラメータを持つことができることを学びました:
functionName(parameter1, parameter2, parameter3) {
code to be executed
}
関数のパラメータは、関数定義内にリストされた名前です。
関数の引数は、関数に渡される(受信する)実際の値です。
JavaScript の関数定義は、パラメーターのデータ・タイプを指定しません。
JavaScript の関数は、渡された引数の型のチェックを実行しません。
JavaScript の関数は、受け取った引数の数をチェックしません。
関数を宣言よりも少ない引数で呼び出した場合、欠損値は undefined に設定されます。
時には、これでも問題ない場合もありますが、パラメータにデフォルト値を代入した方が良い場合もあります:
関数を、宣言よりも多い引数で呼び出した場合、これらの引数は arguments オブジェクト を使用して取出すことができます。
JavaScript 関数は、arguments オブジェクトという組込みオブジェクトを持っています。
argument オブジェクトには、関数を呼び出すときに使用した引数の配列が含まれています。
つぎのように、数値のリストの中から最大値を探すための関数にも、簡単に利用できます:
x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
var i;
var max = -Infinity;
for (i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
Try it Yourself »
または、入力値の合計を計算する関数作成にも使用できます:
x = sumAll(1, 123, 500, 115, 44, 88);
function sumAll() {
var i, sum = 0;
for (i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
Try it Yourself »
関数呼び出しのパラメータは、関数の引数です。
JavaScript の引数は値渡しです。関数は、引数のアドレスではなく、値を取得します。
関数が、引数の値を変更しても、パラメータの元の値は変更されません。
引数を変更しても、関数の外からは見えません(反映されません)。
JavaScript では、オブジェクトは値を参照します。
このため、オブジェクトは参照により渡されたように動作します:
関数が、オブジェクトのプロパティを変更すると、元の値も変更されます。
オブジェクト・プロパティの変更は、関数の外からも見えます(反映されます)。