以前の記事では、匿名関数を呼び出すさまざまな方法に言及しました。この記事では、名前付き関数を呼び出すさまざまな方法を見ていきます。
1。()
最も一般的に使用される機能は、関数を呼び出す/実行することです。
コードコピーは次のとおりです。
//パラメーター関数fun1なし
関数fun1(){
アラート(「私は呼ばれています」);
}
fun1();
//パラメーター関数FUN2
関数fun2(param){
アラート(param);
}
fun2( '私は呼ばれています');
ECMAScript3、呼び出しおよび適用関数の後、関数には2つのタイプがあります。
2。呼び出し
コードコピーは次のとおりです。
//パラメーター関数fun1なし
関数fun1(){
アラート(「私は呼ばれています」);
}
fun1.call(null);
//パラメーター関数FUN2
関数fun2(param){
アラート(param);
}
fun2.call(null、 '私は呼ばれています')
3。適用します
コードコピーは次のとおりです。
//パラメーター関数fun1なし
関数fun1(){
アラート(「私は呼ばれています」);
}
fun1.apply(null);
//パラメーター関数FUN2
関数fun2(param){
アラート(param);
}
fun2.apply(null、['私は呼ばれています'])
呼び出しは、純粋に機能を呼び出す/実行するために純粋に使用できますが、機能実行のコンテキストを変更するためにより使用されます。
4。NEW(この方法は推奨されません)
コードコピーは次のとおりです。
//パラメーター関数fun1なし
関数fun1(){
アラート(「私は呼ばれています」);
}
new fun1();
//パラメーター関数FUN2
関数fun2(param){
アラート(param);
}
new fun2( '私は呼ばれています')
新しいものの本質は、クラスのインスタンスを作成/構築することです。ここで定義されているFun1とFun2は明らかにクラスではありません(これはありませんが、プロトタイプはありません)。しかし、両方の関数が実行されました。これは新しいものの副作用です。
上記の通話方法から、4つの方法の実行結果に違いはありません。しかし、関数に戻り値がある場合、新しい方法でそれを呼び出すときにあなたを失望させるかもしれません。
コードコピーは次のとおりです。
//返品値で楽しい機能
function fun(){
アラート(「私は呼ばれています」);
「ジャック」を返します。
}
var c = new Fun();
アラート(c); // [オブジェクトオブジェクト]、「ジャック」してみませんか?
これに変更してください
コードコピーは次のとおりです。
//返品値で楽しい機能
function fun(){
アラート(「私は呼ばれています」);
return {name: 'jack'};
}
var c = new Fun();
アラート(c.name); //ジャック、それは正常に返されました
要約する:新しい方法で関数を呼び出すとき。返品値がある場合、戻り値が文字列(文字列)、数字(数)、ブールンなどのJavaScriptの組み込みタイプ(ベースタイプ)の場合、値は返されません。戻り値がオブジェクトタイプの場合、オブジェクト、関数、および配列が直接返されます。
リターン値が組み込みのタイプ(ベースタイプ)である場合、New Fun()は何を返しますか?次の記事では、新しいメソッド呼び出しの詳細について説明します。