ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptで関数のオーバーロードとパラメータのデフォルト値を実装する

JavaScriptで関数のオーバーロードとパラメータのデフォルト値を実装する

高洛峰
高洛峰オリジナル
2016-11-26 14:08:541641ブラウズ

パラメータのデフォルト値とは、関数呼び出し時に実際のパラメータが省略された場合、関数がパラメータにデフォルト値を自動的に割り当て、関数呼び出しの利便性と柔軟性が大幅に向上することを意味します。

たとえば、PHP の文字列インターセプト関数 substr(string,start,length) を考えます。長さが指定されていない場合、関数はデフォルトで文字列の開始位置から文字列の末尾までをインターセプトします。 、開始位置から始まる長さの文字列をインターセプトするため、substr('http://www.hualai.net.cn',11,6) を呼び出すと、最後の One パラメータを省略すると hualai が返されます。 , substr('http://www.hualai.net.cn',11)、hualai.net.cn を返します。

たとえば、jQuery フレームワークでは、$(selector).html() メソッドは要素内の HTML コードを取得し、$(selector).html(content) は要素内の HTML を設定します。 C 言語では、次の形式で関数パラメータのデフォルト値を設定できることがわかっています:


void foo(int a, int b = 1, bool c = false);

Java では、関数のオーバーロードを通じて関数パラメータのデフォルト値を設定できます。

public void foo(int a){

foo(a, 1);
} public void foo(int a, int b){

foo(a, b, false);

}

public void foo(int a, int b, bool c){

//関数の内容
}








そして、JavaScriptでは、 jQueryのような関数パラメータのデフォルト値を設定するにはどうすればよいですか? JavaScript には、C 言語で関数を定義するときにパラメーターの直後に値を割り当てる方法はなく、Java のような関数のオーバーロードもありません。ただし、JavaScript の引数読み取り専用変数配列を通じてこれを実現できます。


function foo(){

var a = argument[0] ? argument[0] : 1;

var b = argument[1] : false;





上記は、パラメーターが存在するかどうかを判断することによって行われ、存在しない場合は、パラメーターの型を判断してデフォルト値を変数に追加できます:

function foo (){

if(typeof argument[0] == 'string')
alert('パラメータの型は文字列です');

else if(typeof argument[0] == 'number')

alert('パラメータの型は数値です');
}



または

function foo(){
if(arguments[0].constructor == String)
alert('パラメータの型は文字列です') ;

else if(arguments[0].constructor == Number )

alter('パラメータの型は数値です');

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。