この記事の例では、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
メソッドを定義するときの注意点:
組み込みメソッドと同じ名前のカスタム関数を持たないでください:
JS または DOM の組み込みメソッドと同じ名前を使用しないでください。たとえば、selectAll や 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
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
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