1. ホーム
  2. javascript

[解決済み] callとapplyの違いは何ですか?

2022-03-16 18:19:34

質問

を使用するのとでは、どのような違いがあるのでしょうか。 Function.prototype.apply()Function.prototype.call() を使って関数を呼び出すことができますか?

var func = function() {
  alert('hello!');
};

func.apply();func.call();

前述の2つの方式に性能差はあるのでしょうか?どのような場合に call オーバー apply その逆は?

どのように解決するのですか?

その差は apply で関数を呼び出すことができます。 arguments を配列で指定します。 call は、パラメータを明示的に列挙する必要があります。便利なニーモニックは "です。 A について a レイと C に対して c omma."

については、MDN のドキュメントを参照してください。 適用 コール .

擬似的な構文です。

theFunction.apply(valueForThis, arrayOfArgs)

theFunction.call(valueForThis, arg1, arg2, ...)

また、ES6の時点では、以下のような可能性があります。 spread で使用するための配列です。 call 関数を使用すると、互換性を確認することができます ここで .

サンプルコードです。

function theFunction(name, profession) {
    console.log("My name is " + name + " and I am a " + profession +".");
}
theFunction("John", "fireman");
theFunction.apply(undefined, ["Susan", "school teacher"]);
theFunction.call(undefined, "Claude", "mathematician");
theFunction.call(undefined, ...["Matthew", "physicist"]); // used with the spread operator