JS関数のオーバーロード_javascriptスキルの詳細説明
JS の関数定義では、形式的なパラメータ名を指定できます。多かれ少なかれ、js はさまざまな数のパラメータを使用したメソッドのオーバーロードをサポートできると考えられますが、残念ながら、これは単なる幻想です。引数が渡されると、このパラメータは配列に似ています。関数が呼び出されるとき、すべての実パラメータはこのデータ構造に格納されます。アクセスする方法。言い換えれば、JS のすべての関数は無制限のパラメーターをサポートしており、データ型は弱い型なので、JS 関数には名前以外のメソッドの違いはありません。
JavaScript で特別なオブジェクト引数を使用して関数のオーバーロードをシミュレートする方法は常にあります。これを使用して、オーバーロードを区別するために渡されるパラメーターの数またはタイプを決定します。
1. パラメータの数に応じたオーバーロード
js は、arguments.length 属性を使用して受信パラメータの数を決定できます。
関数 add() {
If (arguments.length == 1) {
アラート(引数[0] 10);
}
else if (arguments.length == 2) {
alert(引数[0] 引数[1]);
}
}
//関数呼び出し
add(10);
add(10, 20);
2. パラメータの型に応じたオーバーロード
変数の型を決定する 3 つの方法:
1. typeof ステートメントを使用して変数の型を決定します。typeof ステートメントは、その型に対応する文字列を返します。
2.instanceof ステートメントを使用して変数の型を決定します。instanceof ステートメントは true/false を返します。
3. コンストラクター属性を使用して変数の型を決定します。この属性は、変数の構築に使用されるコンストラクター参照を返します。
比較表: typeof では特定の型を正確に決定できないことがわかるため、コンストラクターを使用して決定します。
コンストラクター 文字列 数値 オブジェクト関数 ブール配列 ユーザー定義
関数 add()
{
(arguments.length == 0) の場合は 0 を返します;
var sum=0;
for(var i=0; i
//または次のように変更します: if(arguments[i]instanceofNumber)
//または次のように変更します: if(typeof(arguments[i])=="number")
sum = 引数[i];
}
}
合計を返します;
}
//関数呼び出し
アラート(追加(10));
アラート(add(10,20));

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











顔の検出および認識テクノロジーは、すでに比較的成熟しており、広く使用されているテクノロジーです。現在、最も広く使用されているインターネット アプリケーション言語は JS ですが、Web フロントエンドでの顔検出と認識の実装には、バックエンドの顔認識と比較して利点と欠点があります。利点としては、ネットワーク インタラクションの削減とリアルタイム認識により、ユーザーの待ち時間が大幅に短縮され、ユーザー エクスペリエンスが向上することが挙げられます。欠点としては、モデル サイズによって制限されるため、精度も制限されることが挙げられます。 js を使用して Web 上に顔検出を実装するにはどうすればよいですか? Web 上で顔認識を実装するには、JavaScript、HTML、CSS、WebRTC など、関連するプログラミング言語とテクノロジに精通している必要があります。同時に、関連するコンピューター ビジョンと人工知能テクノロジーを習得する必要もあります。 Web 側の設計により、次の点に注意してください。

関数のオーバーロードでは、同じ名前で異なるシグネチャを持つ関数をクラス内で使用できますが、関数のオーバーライドは、基本クラス内の同じシグネチャを持つ関数をオーバーライドするときに派生クラスで発生し、異なる動作を提供します。

Go 言語は従来の関数のオーバーロードをサポートしていませんが、次の方法で同様の効果を実現できます。 名前付き関数の使用: 異なるパラメーターまたは戻り値の型を持つ関数に一意の名前を作成する (Go1.18 以降) ジェネリックを使用して一意の名前を作成する。さまざまなタイプのパラメータ用の関数の単一バージョン。

PHP では関数のオーバーロードと書き換えがサポートされており、柔軟で再利用可能なコードを作成できます。関数のオーバーロード: 同じ名前でパラメーターが異なる関数を作成し、パラメーターの一致に基づいて最も適切な関数を呼び出すことができます。関数の書き換え: サブクラスが同じ名前の関数を定義し、親クラスのメソッドをオーバーライドできるようにします。サブクラスのメソッドが呼び出されると、親クラスのメソッドがオーバーライドされます。

C++ 関数のオーバーロードのベスト プラクティス: 1. 明確で意味のある名前を使用します。 2. 過剰なオーバーロードを避けます。 4. パラメーターの順序を統一します。 5. SFINAE を使用します。

以下の理由により、Go 言語では関数のオーバーロードは許可されていません。 コンパイラーの実装を簡素化する コードの可読性を向上させ、名前の競合を回避する Go では、変数パラメーター リストまたはインターフェイスを使用して、関数のオーバーロードと同様の動作を実現できます。

あいまいな呼び出しは、どのオーバーロードされた関数を呼び出すべきかをコンパイラーが判断できない場合に発生します。解決策には、オーバーロードされた関数ごとに一意の関数シグネチャ (パラメーターの型と番号) を提供することが含まれます。オーバーロードされた関数のパラメータ型が特定の呼び出しのパラメータにより適している場合は、明示的な型変換を使用して正しい関数を強制的に呼び出します。コンパイラがあいまいな呼び出しを解決できない場合、エラー メッセージが生成され、関数のオーバーロードを再チェックして変更する必要があります。

関数のオーバーロードを使用すると、同じ名前の関数を C++ で異なる方法で定義したり、異なる型の引数を処理したり、異なる操作を実行したりすることができます。特定のアプリケーション シナリオには以下が含まれます。 さまざまなデータ型を処理してさまざまな関数を提供し、コードの可読性を向上させる
