JavaScript における Arguments オブジェクトの使用に関する詳細な説明

JavaScript における Arguments オブジェクトの使用に関する詳細な説明

実際の開発では、Arguments オブジェクトが非常に役立ちます。 Arguments オブジェクトを柔軟に使用すると、関数を使用する柔軟性が向上し、抽象プログラミングにおける関数の適応性とエラー修正機能が強化されます。

JavaScript における Arguments オブジェクトの目的の概要。

序文

私たちの多くは、コード開発の過程で、Arguments オブジェクトという特別なオブジェクトを使用したことがあると思います。

実際の開発では、Arguments オブジェクトが非常に役立ちます。 Arguments オブジェクトを柔軟に使用すると、関数を使用する柔軟性が向上し、抽象プログラミングにおける関数の適応性とエラー修正機能が強化されます。

では、Arguments オブジェクトはどのように使用すればよいのでしょうか?今日はまとめましょう。

議論の基本概念

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

Arguments は配列に似ていますが、配列ではないオブジェクトです。配列と同じアクセス プロパティとメソッドを持っているため、配列に似ています。対応する単一パラメータの値は、 arguments[n]によってアクセスでき、配列の長さ属性を持っています。また、Arguments オブジェクトは関数に実際に渡されるパラメータを格納するもので、関数宣言で定義されたパラメータ リストに限定されず、Arguments オブジェクトを明示的に作成することもできません。

以下は、引数を使用する簡単な例です。

関数func1(a, b, c) {
    console.log(引数[0]);
    console.log(引数[1]);
    console.log(引数[2]);
}

関数1(1, 2, 3);
// 1
// 2
// 3

関数内のargumentsを通じて渡されたパラメータセットを直接取得し、対応する位置のパラメータ値を配列の形式で取得することができます。

議論の役割

JavaScript の特別なオブジェクトとしての Arguments の用途、または使用方法は何ですか?

実パラメータと仮パラメータの数を取得する

関数の実際のパラメータの数を取得するには、arguments.length プロパティを使用します。関数オブジェクトの長さプロパティを使用すると、関数の仮パラメータの数を取得できます。このプロパティは読み取り専用プロパティであり、関数本体の内外で使用できます。

次の例では、関数の仮パラメータと実パラメータが一致しているかどうかをチェックし、一致していない場合は例外をスローする checkArg() 関数を設計します。

関数 checkArg(a) {
    //関数の実際のパラメータと仮パラメータが一致しているかどうかを確認します。if (a.length != a.callee.length)
        // 実際のパラメータの数が仮パラメータの数と異なる場合は、エラーがスローされます。 throw new Error("実際のパラメータと仮パラメータが一致していません");
}

関数 f(a, b) {
    // 2 つの数値の平均を計算します checkArg(arguments); // 引数を使用して、関数の実際のパラメーターと仮パラメーターが一致しているかどうかを確認します return ((a * 1 ? a : 0) + (b * 1 ? b : 0)) / 2; // 平均値を返します }
console.log(f(6)); //例外をスローします。パラメータを渡して関数fを呼び出す

実際のパラメータ値を変更する

次の例では、for ループを使用して arguments オブジェクトを反復処理し、ループ変数の値を arguments に渡して、実際のパラメーター値の変更を容易にしています。

関数f(){
    for (let i = 0; i < arguments.length; i++) { //引数オブジェクトを走査する arguments[i] = i; //各実パラメータの値を変更する console.log(arguments[i]); //変更された実パラメータ値を表示する}
}

f(3, 3, 6); // 3, 3, 6 の代わりに 0, 1, 2 のプロンプトを返します

引数の数の変更

長さプロパティ値を変更することで、関数の実際のパラメータの数も変更できます。長さプロパティ値が増加すると、増加した実際のパラメータ値は未定義になります。長さプロパティ値が減少すると、長さ値の後の実際のパラメータ値は破棄されます。

関数f(){
    arguments.length = 2; //argumentsプロパティオブジェクトの長さプロパティ値を変更します for (let i = 0; i < arguments.length; i++) {
        console.log(引数[i]);
    }
}

f(3, 3, 6); //プロンプト3, 3を返す

パラメータの有効性を確認する

次の例では、arguments.callee を使用して匿名関数を取得し、関数の length プロパティを通じて関数パラメータの数を取得します。最後に、実際のパラメータの数と仮パラメータの数を比較して、ユーザーが渡したパラメータが要件を満たしているかどうかを確認します。

関数 f(x,y,z) {
    let a = arguments.length; //関数の実際のパラメータの数を取得します。let b = arguments.callee.length; //関数の仮パラメータの数を取得します。if (a != b){ //実際のパラメータと仮パラメータの数が等しくない場合は、エラーメッセージが表示されます。throw new Error("渡されたパラメータが一致しません");
    }else { // 実パラメータと仮パラメータの数が同じ場合は、それらの合計を返します return x + y + z;
    }
}

console.log(f(3,4,5)); //戻り値12

arguments.callee は関数名と同等です。上記の例では、arguments.callee は f と同等です。

関数パラメータの数が不明な場合、呼び出し関数の実際のパラメータ値にアクセスするために使用されます。

関数パラメータの数が不明な場合、または関数に多数のパラメータがあり、各仮パラメータを 1 つずつ定義したくない場合は、パラメータの定義を省略し、関数本体で Arguments オブジェクトを直接使用して、呼び出し元関数の実際のパラメータ値にアクセスできます。

次の例では、引数オブジェクトを使用してパラメータの平均を計算する平均関数を定義します。関数を呼び出すときに、任意の数のパラメータを渡すことができます。

関数avg() {
    //平均値を求める let num = 0;
    let length = 0; //一時変数を宣言して初期化する for (let i = 0; i < arguments.length; i++) {
        //すべての実パラメータを走査します if (typeof arguments[i] != "number") {
            //パラメータが数値でない場合は続行します。 //パラメータ値を無視します}
        num += arguments[i]; //パラメータの数値の合計を計算します length++; //合計演算に関係するパラメータの数を計算します}

    return num / length; //平均値を返す}

console.log(avg(1, 2, 3, 4)); // 2.5 を返します
console.log(avg(1, 2, "3", 4)); // 2.33333333333333335 を返します

実際のパラメータの値を走査またはアクセスする

引数オブジェクトは配列ではなく疑似配列です。length 属性と括弧構文を使用して、実際のパラメータの値を走査したり、値にアクセスしたりできます。ただし、動的呼び出しメソッドを通じて、push、pop、slice などの配列メソッドを使用することもできます。

次の例では、動的呼び出しメソッドを使用して、引数オブジェクトが配列メソッド slice() を呼び出して、関数パラメーター オブジェクトを配列に変換します。

関数f(){
    [].slice.apply(引数)を返します。
    // 次の式も使用できます // return Array.from(arguments);
    // [...引数] を返します。
}
console.log(f(1, 2, 3, 4, 5, 6)); //[1,2,3,4,5,6]を返します

要約する

上記は、Arguments オブジェクトの実用的な使用法のまとめです。Arguments を柔軟に使用して、詩的なコードを書けるようになることを願っています。

JavaScript での Arguments オブジェクトの使用に関するこの記事はこれで終わりです。JavaScript での Arguments オブジェクトの使用に関する詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript によるデータ視覚化: ECharts マップの作成
  • 非常に詳細な基本的なJavaScript構文ルール
  • JavaScript における型の必須および暗黙的な変換の詳細な説明
  • JavaScriptはスライダーを介してWebページの色を変更することを実装します
  • JavaScript es6 における var、let、const の違いの詳細な説明
  • JavaScript における this ポイントの問題の詳細な説明
  • JavaScript 関数呼び出し、適用、バインド メソッドのケース スタディ
  • JavaScript CollectGarbage 関数の例
  • JavaScript における BOM と DOM の詳細な説明
  • JavaScript の setTimeout と setTimeinterval の使用例の説明
  • 期間限定フラッシュセール機能を実現するJavaScriptタイマー
  • 期間限定フラッシュセール機能を実装するJavaScript
  • JavaScript オブジェクト (詳細)

<<:  Grafana+Prometheus を使用して MySQL サービスのパフォーマンスを監視する

>>:  DockerはElasticsearch7.6クラスタをインストールし、パスワードを設定します

推薦する

1つの記事でTypeScriptのデータ型について学ぶ

目次基本タイプあらゆるタイプ配列タプルインタフェース関数自己推論を入力する結合タイプ(1つ以上選択)...

CSS を使用して適応型の幅と高さを持つ 16:9 の長方形を実装する例

先ほど、適応幅と高さが1:1の正方形を作成する方法について説明しました。 https://www.j...

Vueナンバープレート検索コンポーネントの使い方の詳しい説明

参考までに、シンプルなナンバープレート入力コンポーネント(vue)です。具体的な内容は次のとおりです...

Django がローカル MySQL データベースに接続する手順 (pycharm)

ステップ1:setting.pyでデータベースを変更する # データベースを構成する DATABAS...

NginxはGzipアルゴリズムを使用してメッセージを圧縮します

HTTP圧縮とは場合によっては、比較的大きなメッセージ データがクライアントとサーバー間で送信され、...

Vue3は独自のページングコンポーネントをカプセル化します

この記事の例では、vue3 が独自のページングコンポーネントをカプセル化する具体的なコードを参考まで...

ubuntu20.04 上の CLion2020.1.3 での ROS のインストールと設定の詳細な説明

1. CLionをダウンロード、インストール、アクティベートするオンラインで提供されるチュートリアル...

Zabbix は MySQL インスタンス メソッドを監視します

1. 監視計画監視項目を作成する前に、何を監視するのか、どのように監視するのか、監視データをどのよう...

Tomcat の構成と最適化ソリューションの詳細な説明

サービス.xml Server.xml 構成ファイルは、コンテナー全体を構成するために使用されます。...

Docker構成 Alibaba Cloud Container Serviceの操作

Alibaba Cloud Dockerコンテナサービスの設定Alibaba Cloud Image...

nginxディレクトリパスをリダイレクトする方法

ドメイン名に続くパスがデフォルトの Web ディレクトリではなく、ローカル ディスク上の他のディレク...

Ubuntu での mysql のインストールと使用 (一般版)

Ubuntu のバージョンに関係なく、MySQL データベースのインストールは基本的に同じです。具...

トランザクションとロックを表示するための MySQL の一般的なステートメント

データベース内のトランザクションとロックを表示するための一般的なステートメントトランザクションの待機...

Web デザインでフラッシュ オーバーレイ ポップアップ レイヤーの z-index プロパティを設定しても機能しない

デフォルトでは、Flash は常にページのトップレベルに表示されます。つまり、ページに DHTML ...

Vue プロジェクトで mock.js を使用するための完全な手順

Vue プロジェクトで mock.js を使用する開発ツールの選択: Vscode 1. コマンドラ...