JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのargumentsオブジェクトとは?基本の使い方をわかりやすく解説

argumentsオブジェクトとは

JavaScriptのargumentsオブジェクトは、現在実行中の関数に渡された引数を表すオブジェクトです。関数内で自動的に利用できるため、仮引数として宣言した数に関係なく、実際に呼び出し時に渡されたすべての引数へアクセスすることができます。

argumentsオブジェクトは配列のようにインデックスで要素へアクセスできますが、厳密には配列ではなく「配列風(array-like)オブジェクト」である点に注意してください。そのため、mapfilterなどの配列メソッドを直接使うことはできません。

構文

[function.]arguments[p]

サンプルコード

以下のコードを実行すると、argumentsオブジェクトの基本的な動作を確認できます。

<html>
<body>
<script>
function functionArgument(val1, val2, val3) {
  var res = "";
  res += "Expected Arguments: " + functionArgument.length;
  res += "<br />";
  res += "Current Arguments : " + arguments.length;
  res += "<br />";
  res += "Each argument = ";

  for (p = 0; p < arguments.length; p++) {
    res += "<br />";
    res += functionArgument.arguments[p];
    res += " ";
  }
  document.write(res);
}
functionArgument(20, 50, 80, "Demo Text!", "Hello World", new Date());
</script>
</body>
</html>

実行結果のポイント

  • Expected Arguments:関数で宣言された仮引数の数(この例では3)が表示されます。
  • Current Arguments:呼び出し時に実際に渡された引数の数(この例では6)が表示されます。
  • Each argument:ループ処理によって、渡された各引数が順番に出力されます。

補足:現代のJavaScriptでの注意点

上記の例で使用している functionName.arguments の形式は非推奨(deprecated)となっており、現在は関数内で直接 arguments を参照するのが一般的です。

また、ES6以降では可変長の引数を受け取る場合に、より直感的な残余引数(rest parameters)を使うことが推奨されています。

function sum(...args) {
  return args.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3)); // 6

アロー関数ではargumentsオブジェクトが使えないため、そうしたケースでも残余引数が有効です。レガシーコードを読む際の知識としてargumentsオブジェクトを理解しておくと役立ちます。

  1. JavaScriptのProxy(プロキシ)オブジェクトとは?使い方をサンプルコードで解説

    Proxyオブジェクトとは JavaScriptのProxy(プロキシ)オブジェクトは、元のオブジェクトや関数をラップ(包み込む)し、プロパティへのアクセスや関数の呼び出しなどの基本的な操作に対して、独自のカスタム処理を挟むための仕組みです。 Proxyは次の2つの引数を受け取ります。 target:操作対象となる元のオブジェクト handler:カスタム動作(トラップ)を定義するオブジェクト handler内では、プロパティ取得時に呼ばれるget、プロパティ設定時に呼ばれるsetなど、さまざまなトラップを定義できます。 サンプルコード 以下は、Proxyオブジェクトを使って、オブジェク

  2. JavaScriptのオブジェクトメソッドとは?使い方とサンプルコードを解説

    JavaScriptにおけるオブジェクトメソッドとは、オブジェクトに対して実行できる操作(アクション)のことです。オブジェクトは文字列や数値などのデータ(プロパティ)だけでなく、関数を値として持つことができ、この関数が「メソッド」として機能します。メソッド内では this キーワードを使用することで、そのオブジェクト自身が持つプロパティへアクセスできます。これは、オブジェクト指向プログラミングにおいて非常に重要な概念です。オブジェクトメソッドのサンプルコード以下は、ユーザーの入力した名前と年齢から、成人かどうかを判定するメソッドを持つオブジェクトを作成する例です。<!DOCTYPE ht