ホームページ > ウェブフロントエンド > jsチュートリアル > Javascript_javascript スキルのメソッドと匿名メソッド インスタンスの詳細な説明

Javascript_javascript スキルのメソッドと匿名メソッド インスタンスの詳細な説明

WBOY
リリース: 2016-05-16 15:55:07
オリジナル
1152 人が閲覧しました

この記事の例では、JavaScript のメソッドと匿名メソッドについて説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。

JavaScript メソッド (関数)

宣言関数

関数で始まり、その後に関数名が続きます。C# や Java とは異なり、JavaScript では戻り値の型とパラメーターの型を宣言する必要はありません。戻り値は未定義です。

例を見てみましょう:
パラメータも戻り値も持たないメソッド:

function f1(){
alert('这是一个方法');
}
f1();//调用方法 

ログイン後にコピー

パラメータと戻り値のないメソッド:

function f2(){
return 100;
}
var result=f2();//声明一个变量,接收f1()中的返回值
alert(result);//100 

ログイン後にコピー

パラメータと戻り値を持つメソッド:

function f3(n1,n2){
return n1+n2;
}
var result=f3(20,30);
alert(result);//50

ログイン後にコピー

注 1:

まず例を見てください:

function f1(){
  alert('这是一个方法'); 
}
alert(f1());//弹出”这是一个方法”后,还会显示undefined

ログイン後にコピー

理由: js では、変数に値が割り当てられていない場合、その変数は未定義になります。この場合、f1() には戻り値がないため、未知の値 (未定義) が入ります。 alert()、もちろんポップアップは未定義です。

注 2:

alert(f1);//不写括号,会将f1整个代码以字符串形式显示出来:
function f1(){ 
alert('这是一个方法'); 
} 
ログイン後にコピー

JavaScript にはメソッドのオーバーロードはありません

最後に定義されたメソッドのみを呼び出します:

function f1(n1,n2){ 
alert(n1+n2); 
} 
function f1(n1,n2){ 
alert(n1-n2); 
} 
f1(10,2);//8

ログイン後にコピー
結論: どこで呼び出されても、最後に定義されたメソッドのみが呼び出されます。

注: 数値は未定義=未定義

function f1(n1,n2,n3){ 
alert(n1-n2+n3); 
} 
f1(10,2);
//NaN,因为没有给n3传值,n3就是undefined,
//数字加上undefined还是undefined

ログイン後にコピー
上記の結論: Javascript にはメソッドのオーバーロードはありません

メソッドを定義するときの注意点:

組み込みメソッドと同じ名前のカスタム関数を持たないでください:

JS または DOM の組み込みメソッドと同じ名前を使用しないでください。たとえば、selectAll や focus などの関数名を使用しないでください。

システム関数と同じ名前を持たないでください。 (クリック イベントで独自に定義した focus メソッドを呼び出すときに問題が発生します。システムの focus() メソッドと同じ名前が付いています)

ルール括弧の記述に関する注意:

通常、JS で中括弧を記述する場合、その直後に

が続きます。

function f1(){ 
return 
{ 
age:100}; 
} 
var s=f1(); 
alert(s.age);
//undefined。s结果是undefined,undefined.age必然还是undefined

ログイン後にコピー

匿名メソッド (よく使用されます)

匿名メソッドの使用が推奨されるのはなぜですか?

1. 1.js には aa(){alert{'かなりイケメン'}} というメソッドがあります

2. 2.js には function aa(){alert{'ますますイケメン'}} というメソッドがあります

3. 1.js と 2.js を順番にindex.html にインポートし、aa() を呼び出します。結果は次のようになります。

結論: 2.js の aa() メソッドは 1.js の aa() をオーバーライドします

どうすればいいですか?メソッド名を指定せず、匿名メソッドを使用してください

まず、匿名メソッドを変数に割り当てる例を見てみましょう:

var ff=function(n1,n2){ 
return n1+n2; 
}; 
alert(ff(20,30));//50

ログイン後にコピー
匿名メソッドを 1 行で記述します:


コードをコピー コードは次のとおりです:
(function (n1,n2){alert(n1 n2);} )(9 ,9);

小さなケース: 1:

var x=1; 
var y=0; 
var z=0; 
var add=function (n){n=n+1;return n}; 
y=add(x);//结果是2,先调用上面add 
add=function(n){n=n+3;return n;}; 
z=add(x);//结果是4,调用上面临近的这个add 
alert(y+','+z);//2,4

ログイン後にコピー
小さなケース 2:

function aa() 
{ 
  alert("aaa"); 
  return function(){alert("bbb");}; 
} 
alert(aa);//不写括号,会将aa方法的整个代码显示出来 
alert(aa());//aaa,function(){alert("bbb");}; aaa就不解释了,后面那一串是作为aa()的返回值显示 
alert(aa()());//aaa,bbb,undefined 
//下面分解上面这句进行解释 
var s=aa();//aaa 
alert(s());//s()就是function(){alert("bbb");};首先弹出bbb,其次该方法没有返回值,故弹出undefined

ログイン後にコピー
この記事が皆様の JavaScript プログラミング設計に役立つことを願っています。

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