前の記事では、匿名関数を呼び出す複数の方法について説明しました。この記事では、名前付き関数を呼び出すさまざまな方法を説明します。
1, ()
最も一般的に使用されるのは、関数を呼び出し/実行するための () 演算子です。
// パラメータのない関数 fun1
関数 fun1() {
alert('電話がかかってきました');
}
fun1();
// パラメータ化された関数 fun2
function fun2(param) {
アラート(パラメータ);
}
fun2('呼ばれました');
ECMAScript3 では Function に call と apply を追加し、以下の 2 種類があります。
2.
に電話します。
// パラメータのない関数 fun1
関数 fun1() {
alert('電話がかかってきました');
}
fun1.call(null);
// パラメータ化された関数 fun2
function fun2(param) {
アラート(パラメータ);
}
fun2.call(null,'電話されました')
3. 適用
// パラメータのない関数 fun1
関数 fun1() {
alert('電話がかかってきました');
}
fun1.apply(null);
// パラメータ化された関数 fun2
function fun2(param) {
アラート(パラメータ);
}
fun2.apply(null,['呼ばれました'])
call と apply は純粋に関数の呼び出し/実行に使用できますが、関数実行のコンテキストを変更するために使用されます。
4. 新しい (この方法は推奨されません)
// パラメータのない関数 fun1
関数 fun1() {
alert('電話がかかってきました');
}
新しい fun1();
// パラメータ化された関数 fun2
function fun2(param) {
アラート(パラメータ);
}
新しい楽しみ2(「呼ばれました」)
new の本質は、クラスのインスタンスを作成/構築することです。ここで定義されている fun1 と fun2 は明らかにクラスではありません (これもプロトタイプもありません)。ただし、両方の関数は実行されました。これは新しい副作用です。
上記のメソッド呼び出しから、4つのメソッドの実行結果に違いはありません。ただし、関数に戻り値がある場合、new で呼び出すと少しがっかりするかもしれません。
// 関数 fun
と戻り値
関数 fun() {
alert('電話がかかってきました');
"ジャック" を返します;
}
var c = 新しい楽しみ();
alert(c);//[object オブジェクト]、なぜ「ジャック」ではないのでしょうか?
これに変更してください
// 関数 fun
と戻り値
関数 fun() {
alert('電話がかかってきました');
{name:'jack'} を返します;
}
var c = 新しい楽しみ();
alert(c.name); //ジャック、再び正常に返されました
要約すると、新しいメソッドを使用して関数を呼び出すときです。戻り値がある場合、戻り値が String、Number、Boolean などの JavaScript の組み込み型 (基本型) の場合、戻り値がオブジェクトの場合は値は返されません。 function 、 array およびその他のオブジェクト型の場合、 object、function、array が直接返されます。
戻り値が組み込み型(基本型)の場合、new fun()は一体何を返すのでしょうか?次の記事では、新しいメソッド呼び出しの詳細について説明します。