ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScriptで引数オブジェクトを使用するにはどうすればよいですか? (使い方紹介)

JavaScriptで引数オブジェクトを使用するにはどうすればよいですか? (使い方紹介)

不言
リリース: 2019-01-19 10:44:02
転載
3168 人が閲覧しました

この記事の内容は、JavaScript での argument オブジェクトの使用方法についてです。 (使い方の紹介)、困っている友達が参考になれば幸いです。

arguments は、関数に渡される引数に対応する配列のようなオブジェクトです。

#構文

arguments
ログイン後にコピー

説明

arguments オブジェクトは、すべての関数で使用できるローカル変数です。引数オブジェクトを使用して、関数内で関数の引数を参照できます。このオブジェクトには、関数に渡される各パラメーターのエントリが含まれており、最初のエントリのインデックスは 0 から始まります。たとえば、関数に 3 つの引数が渡された場合、次のように参照できます:

arguments[0]
arguments[1]
arguments[2]
ログイン後にコピー

パラメータも設定できます:

arguments[1] = 'new value';
ログイン後にコピー

引数オブジェクトは Array ではありません。これは配列に似ていますが、長さ以外の配列プロパティを持ちません。たとえば、pop メソッドはありません。ただし、実数の配列に変換することはできます::

let args = Array.prototype.slice.call(arguments); 
let args = [].slice.call(arguments);
ログイン後にコピー

Array.from() メソッドまたはスプレッド演算子を使用して、引数を実数の配列に変換することもできます:

let args = Array.from(arguments);
let args = [...arguments];
ログイン後にコピー

Pair パラメータスライスは、一部の JavaScript エンジン (V8 エンジンなど) での最適化を妨げます。

それらが気になる場合は、引数オブジェクトをループして新しい配列を構築してみてください。

もう 1 つのアプローチは、無視/軽蔑/軽蔑/軽蔑された配列コンストラクターを関数として使用することです:

let args = (
arguments.length === 1 ? [arguments[0]] : 
Array.apply(null, arguments)
);
ログイン後にコピー

配列ジェネリックスが利用可能な場合は、次のコードを代替として使用できます

var args = Array.slice(arguments);
ログイン後にコピー

引数オブジェクトは関数内でのみ有効です。関数の外で引数オブジェクトを呼び出すとエラーが発生します。

引数の typeof は「オブジェクト」を返します。

console.log(typeof argument); // 'object'

インデックスを使用して各引数の型を決定できます。

console.log(typeof arguments[0]); 
//这将返回单个参数的typeof。
ログイン後にコピー

明示的に宣言されているよりも多くの引数を指定して関数を呼び出す場合は、引数オブジェクトを使用できます。この手法は、可変数のパラメーターを持つ関数に役立ちます。 argument.length を使用して引数の数を取得し、arguments オブジェクトを使用して各引数を処理できます。 (関数シグネチャのパラメーターの数を取得するには、Function.length プロパティを使用します。)

プロパティ

arguments.callee
// 指向当前执行的函数。
arguments.caller 
// 指向调用当前函数的函数。
arguments.length
// 指向传递给当前函数的参数数量。
ログイン後にコピー

Example

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

この例では、文字列を連結する関数を定義します。この関数に対して正式に宣言された唯一の引数は文字列であり、文字列を連結するための結合ポイントとして文字を指定します。この関数は次のように定義されます。

function myConcat(separator) {
  var args = Array.prototype.slice.call(arguments, 1);  
  return args.join(separator);
}
ログイン後にコピー

この関数には任意の数の引数を渡すことができ、関数は各引数をエントリとして含むリストを作成します。

myConcat(", ", "red", "orange", "blue");
// returns "red, orange, blue"
myConcat("; ", "elephant", "giraffe", "lion", "cheetah");
// returns "elephant; giraffe; lion; cheetah"
myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");
// returns "sage. basil. oregano. pepper. parsley"
ログイン後にコピー

HTML リストを作成するメソッドを定義する

この例では、文字列から HTML リストを作成する関数を定義します。この関数に対して正式に宣言された唯一の引数は文字です。引数が "u" の場合は順序なしリスト (項目のリスト) が作成され、引数が "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;
}
ログイン後にコピー

この関数には任意の数の引数を渡すことができ、関数は最初の引数で指定された型のリストに各引数をエントリとして追加します。 ES6 の

var listHTML = list("u", "One", "Two", "Three");
/* listHTML is:
"<ul><li>One</li><li>Two</li><li>Three</li></ul>"
*/
ログイン後にコピー

Note

arrow 関数には独自の

arguments オブジェクトがありませんが、ほとんどの場合、restパラメーターによって解決策が得られます:

let a;
const fn = (...rest) => Array.prototype.slice.call(rest, 1);
a = fn(1, 2); // [2]
ログイン後にコピー

以上がJavaScriptで引数オブジェクトを使用するにはどうすればよいですか? (使い方紹介)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート