引数 (Arguments)

引数オブジェクトは、関数に渡された引数に相当する配列風のオブジェクトです。

文法

arguments

説明

argumentsオブジェクトは全ての関数内で使用可能なローカル変数です。 Functionのプロパティとしてのargumentsは、もはや使用されません。

関数内で関数の引数を参照するには、argumentsオブジェクトを使用する必要があります。 このオブジェクトによって、関数へ渡された各引数へアクセスすることが可能となり、 1つ目の引数からインデックス0始まりでアクセスします。 例えば、3つの引数が関数へ渡されたとすると、下記のようにして引数を参照することが出来ます。

arguments[0]
arguments[1]
arguments[2]

また、argumentsに設定することも可能です。

arguments[1] = 'new value';

このargumentsオブジェクトは配列ではありません。 配列に似ていますが、lengthを除き配列のプロパティを持ち合わせておらず、 例えばpopメソッドがありません。 ただし、次のようにすることで実際の配列に変換することが出来ます。

var args = Array.prototype.slice.call(arguments);

JavaScriptエンジン(V8等)での最適化の妨げになるため、argumentsをsliceするべきではありません。

もし、Arrayのジェネリックメソッドが利用可能であれば、 代わりに下記のようして使用することが出来ます。

var args = Array.slice(arguments);

argumentsオブジェクトは、関数の本文内でのみ利用可能です。 関数定義の外からargumentsオブジェクトにアクセスしようとすると、エラーになります。

正式に定義されている引数の数よりも、多い数の引数が指定されて関数が呼び出されても、 argumentsオブジェクトを使用して、それを受け入れることが可能です。 このテクニックは、渡される引数の数が一定では無い関数で便利です。 関数に渡された引数の数を、arguments.lengthで知ることができ、 その後argumentsオブジェクトを使用して、各引数を処理します。 (関数が定義された際に、定義されたargumentsの数を知るためには、Function.lengthを使用します。)

プロパティ

  • プロパティ

  • .callee 非推奨

    このプロパティは、現在実行中の関数を格納します。

  • .length

    このプロパティは、関数に渡された引数の数を格納します。

例: 複数の文字列を連結する関数を定義

この例は、複数の文字列を連結する関数を定義します。 項目の連結に際して、それを仕切るために指定する文字だけが、この関数の正式な引数となります。 関数は下記のように定義されます。

function myConcat(separator) {
  var args = Array.prototype.slice.call(arguments, 1);
  return args.join(separator);
}

この関数に対して任意の数の引数を渡すことが可能であり、 各引数は項目として使用され、リストが作成されます。

//"red, orange, blue"が返されます。
myConcat(", ", "red", "orange", "blue");

//"elephant; giraffe; lion; cheetah"が返されます。
myConcat("; ", "elephant", "giraffe", "lion", "cheetah");

//"sage. basil. oregano. pepper. parsley"が返されます。
myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");

例: HTMLリストを作成する関数の定義

この例では、HTML用のリストが含まれる文字列を生成する関数を定義します。 この関数の正式な引数は、リストを<UL>(unordered)にするのであれば"u"を、 リストを<OL>(ordered - numbered:番号付け)するのであれば"o"を指定する文字列のみになります。 この関数は次のように定義されます。

function list(type) {
  var result = "<" + type + "l><li>";
  var args = Array.prototype.slice.call(arguments, 1);
  result += args.join("</li><li>");
  result += "</li></" + type + "l>"; // end list

  return result;
}

この関数に対して任意の数の引数を渡すことが可能であり、 各引数は項目として指定されたタイプのリストに追加されます。 下記は、その一例になります。

var listHTML = list("u", "One", "Two", "Three");

/* listHTML is:
"<ul><li>One</li><li>Two</li><li>Three</li></ul>"
*/

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本
モバイル
機能 Android Chrome for
Android
Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。