Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

Function.prototype.arguments

非標準: この機能は標準化されていません。非標準の機能はブラウザーの対応が限られ、将来的に変更または削除される可能性があるため、本番環境での使用は推奨されません。ただし、標準の選択肢が存在しない特定のケースでは、有効な代替手段となる場合があります。

メモ:Function オブジェクトのarguments プロパティは非推奨です。推奨されるarguments オブジェクトへのアクセス方法は、関数内で利用できる変数arguments を利用することです。

argumentsFunction インスタンスのアクセサープロパティで、この関数に渡された引数を返します。厳格モード、アロー関数、非同期関数、ジェネレーター関数では、arguments プロパティにアクセスするとTypeError が発生します。

解説

arguments の値は、関数に渡した引数に対応する配列風のオブジェクトです。

再帰呼び出しの場合、すなわちコールスタックに関数f が複数回現れる場合に、f.arguments はもっとも直近に実行された関数に対応する引数を表します。

実行中の関数の未処理の呼び出しがない (つまり、関数が呼び出された状態で返してない) 場合、arguments プロパティの値は通常null です。

ECMAScript 仕様で規定されている唯一の動作は、Function.prototype が初期arguments アクセサーを持っており、get またはset のリクエストに対して無条件にTypeError を発生させるすること(「毒薬アクセサー」として知られています)であり、実装は非厳密なプレーン関数を除いて、このセマンティクスを変更することは許可されていません。arguments プロパティの実際の動作は、エラーを発生させる以外にも何らかの動作がある場合、実装によって定義されています。例えば、 Chrome は自分自身でデータプロパティとして定義していますが、 Firefox と Safari は初期の毒薬であるFunction.prototype.arguments アクセサーを拡張し、非厳格関数であるこれらの値を特別に処理しています。

js
(function f() {  if (Object.hasOwn(f, "arguments")) {    console.log(      "arguments is an own property with descriptor",      Object.getOwnPropertyDescriptor(f, "arguments"),    );  } else {    console.log(      "f doesn't have an own property named arguments. Trying to get f.[[Prototype]].arguments",    );    console.log(      Object.getOwnPropertyDescriptor(        Object.getPrototypeOf(f),        "arguments",      ).get.call(f),    );  }})();// In Chrome:// arguments is an own property with descriptor {value: Arguments(0), writable: false, enumerable: false, configurable: false}// In Firefox:// f doesn't have an own property named arguments. Trying to get f.[[Prototype]].arguments// Arguments { … }

arguments オブジェクトの使用

js
function f(n) {  g(n - 1);}function g(n) {  console.log(`before: ${g.arguments[0]}`);  if (n > 0) {    f(n);  }  console.log(`after: ${g.arguments[0]}`);}f(2);console.log(`returned: ${g.arguments}`);// ログ出力:// before: 1// before: 0// after: 0// after: 1// returned: null

仕様書

どの標準にもありません。

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp