JavaScript関数の詳細な紹介

JavaScript関数の詳細な紹介

任意の数のステートメントを関数を通じてカプセル化することができ、いつでもどこでも呼び出して実行できます。

当社のJavaScriptスクリプト言語は非常に特殊です。C 言語と比較すると、そのパラメータにはデータ型のサポートは必要ありません。 return値については詳しく説明しません。C言語と同じです。書かない場合は自動的にundefined

関数fun(x,y){
            
        }
//関数を宣言するにはこれを記述します

私の理解する限りでは、彼はオブジェクトの形式でパラメータを渡し、オブジェクトのさまざまな属性値(参照型の値)を実際のパラメータとして使用しています。

たとえば、次のようなアプローチがあります。

関数fun(x, y) {
          // alert("x の値は " + x.value です);
            alert("x の値は " + x です);
        }

これを実行すると、ポップアップ ボックスにエラーが表示されます: x の値は[object HTMLInputElement],オブジェクトとして渡されるため、論理設計に準拠していません。次のように実行する必要があります。

x のvalueを返します。

関数fun(x, y) {
            alert("x の値は " + x.value です);
          // alert("x の値は " + x です);
        }

  • したがって、単純な 2 つの整数を乗算して値を返すように設計します。
  • ここで、このタグに入力htmlコードを記述するには、 <form></form>を使用する必要があることを覚えておく必要があります。そうしないと、エラーを探すのに多くの時間を費やすことになります (なぜ私がそれを知っているのかは聞かないでください。ただ涙が出るだけです)。

私たちには深い理解があります。心配しないでください。このコードを見てみましょう。

ここで何か違うのでしょうか? この関数の以前の記述方法によれば、ランダムに記述する必要があるのでしょうか?でも、ここではうまくいってるから面白い(楽しそうに笑う)

つまり、 ECMAScript関数は、渡されるパラメータの数を気にせず、また、渡されるパラメータが何であるかを気にせず、パーサーがエラーを報告しないことになります。 (素晴らしいですね! 先生は、私がパラメータの渡し方を知らないことを心配する必要がなくなりました。) では、彼はこの「世紀の問題」をどのように解決したのでしょうか? 実際、各関数本体には、このパラメータ配列にアクセスして、配列に渡された各パラメータを取得するためのargumentsオブ​​ジェクトがあります。

道教の仲間の皆さん、次のコードfun function fun ("Brave", "Niu Niu") に二重引用符を使ってみてください。何が起こるでしょうか? 説明によると、上の引用符は最も近い引用符とペアになっています。うわー、うわー、うわー

ねえ、これは私たちが学んだjava関数のオーバーロードに少し似ていませんか? 実際、 JavaScriptはオーバーロードはありません。

さらに2つの例を見てみましょう。

関数fun() {
    (引数の長さ == 1)の場合{
        アラート(引数[0] + 10);

    }
    (引数の長さ == 2)の場合{
        アラート(引数[0] + 引数[1]);
    }
}
楽しい(10);//20
楽しい(10,20);//30

パラメータの数を渡すことで適切な機能を実現できるだけで、本当のオーバーロードは実現できません。この機能は完全なオーバーロードではありませんが、 JavaScriptのこの残念さを補うには十分です。 argumentsパラメータと一緒に使用することもできます。

次のように:

関数fun(num1, num2) {
    (引数の長さ == 1)の場合{
        アラート(数値1 + 10);

    }
    (引数の長さ == 2)の場合{
        アラート(引数[0] + 数値2);
    }

}
楽しい(10);//20
楽しい(10, 20);//30

その後、誰かが尋ねました、パラメータはとにかくargumentsオブジェクトに割り当てられているので、 arguments[i]の値を直接変更することは可能ですか?

  • 興味深いのは、 argumentsの動作に関して、その値は常に対応する名前付きパラメータ値と同期され、現在の関数の値が変更されることです。 ! !つまり、パラメータとarguments[i]メモリ空間は独立していますが、値は同期されています。
関数fun(num1, num2) {
    引数[1] = 10;
    アラート(引数[0] + 数値2);
}

</スクリプト>
<フォーム>
 <br><input type="button" onclick="fun(10,20)" value="click">
</フォーム>

ポップアップ ボックスの値は 20 です。これはarguments[i]の値を変更すると、このパラメーターが自動的に反映されることを示しています。このパラメーターが存在しない場合、このパラメーター値を書き換えると構文エラーが発生します。コードは実行されません。同一の関数名が 2 つある場合でもエラーは発生しませんが、その名前は後で定義される関数にのみ属します。

要約:

  • JavaScript関数は他の言語の関数とは微妙に異なります。
  • いつでも任意の値を返すことができるため、値を返す必要はありません。
  • arguments.lengthは、関数の定義時に関数に与えられた名前の数ではなく、渡された引数の数によって決まります。
  • オーバーロードはありません。つまり、パラメータは 0 個以上の配列の形式で参加でき、これらのパラメータにはargumentsオブジェクトを通じてアクセスされます。

JavaScript functionの詳しい紹介はこれで終わりです。JavaScript 関数に関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • javascript関数(関数型)の使い方と注意点のまとめ
  • JavaScript 関数型プログラミング (Functional Programming) 合成関数 (Composition) の使用法の分析
  • JavaScript 関数型プログラミングにおける矢印関数の使用法の分析
  • JavaScript 関数型プログラミングにおける高階関数の使用法の分析
  • JavaScript 関数型プログラミングにおける純粋関数の使用法の分析
  • JavaScript 関数型プログラミング: 宣言型と命令型の例の分析
  • 動的コードをインターセプトするために、eval、Function、その他のシステム関数をJSに挿入します。
  • Vue.js における関数コンポーネントの使用について説明します

<<:  12個のJavascriptテーブルコントロール(DataGrid)が整理されています

>>:  フォームアクションとonSubmitの例

推薦する

Linux での UDP について学ぶ

目次1. UDPとLinuxの基礎の紹介2. 各機能の使い方1. ソケット機能の使用2. バインド機...

擬似分散グラフィックを実現するための VMware 構成 Hadoop チュートリアル

1. 実験環境シリアルナンバープロジェクトソフトウェアとバージョン1オペレーティング·システムCen...

Centos7でポートを開く方法

CentOS7 のデフォルトのファイアウォールは iptables ではなく、firewalle で...

node.jsのインストールとHbuilderXの設定の詳細な説明

npm インストールチュートリアル: 1. Node.jsインストールパッケージをダウンロードする公...

シンプルなID生成戦略: MySQLテーブルからグローバルに一意のIDを生成する実装

グローバル ID を生成する方法は多数あります。ここでは簡単な解決策を紹介します。MySQL の自動...

ログインスライダー検証を実装するJavaScript

この記事では、ログインスライダー検証を実装するためのJavaScriptの具体的なコードを参考までに...

Vue における LocalStorage と SessionStorage の違いと使い方

目次LocalStorageとはSessionStorageとはLocalStorage と Ses...

MySQL スケジュール データベース バックアップ (フル データベース バックアップ) の実装

目次1. MySQLデータのバックアップ1.1. データをバックアップするためのmysqldumpコ...

MySQLアラームの詳細な分析と処理

最近、あるサービスにアラームが発生し、耐えられなくなっています。アラーム情報は次のとおりです。メトリ...

Nginx 設定ファイルの詳細な説明と最適化の提案ガイド

目次1. 概要2. nginx.conf 1) 設定ファイルの場所2) ワーカープロセス3) イベン...

ECMAscript の新機能の紹介

目次1. 関数パラメータのデフォルト値1.1 関数パラメータのデフォルト値の指定1.2 分離割り当て...

MySQL デッドロック シナリオ例の分析

序文最近、MySQL で RR レベルでデッドロック問題に遭遇しました。興味深いと思ったので、調べて...

Linux インストール MySQL チュートリアル (バイナリ配布)

このチュートリアルでは、LinuxにMySQLをインストールする詳細な手順を参考までに紹介します。具...

Mysqlの同時パラメータ調整の詳細な説明

目次クエリキャッシュの最適化概要クエリプロセスクエリキャッシュ構成クエリキャッシュの無効化メモリ管理...