itemprop="text">
What is the difference between using
call
and apply
to invoke a
function?
var func = function()
{
alert('hello!');
};
func.apply();
vs func.call();
Are
there performance differences between the two aforementioned methods? When is it best to
use call
over apply
and vice
versa?
The difference is that
apply
lets you invoke the function with
arguments
as an array; call
requires
the parameters be listed explicitly. A useful mnemonic is
"A for array and
C for
comma."
See
MDN's documentation on href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply"
rel="noreferrer">apply and href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call"
rel="noreferrer">call.
Pseudo
syntax:
theFunction.apply(valueForThis,
arrayOfArgs)
theFunction.call(valueForThis,
arg1, arg2, ...)
There is also, as
of ES6, the possibility to href="https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator"
rel="noreferrer">spread
the array for use with the
call
function, you can see the compatibilities href="http://kangax.github.io/compat-table/es6/"
rel="noreferrer">here.
Sample
code:
data-hide="false" data-console="true"
data-babel="false">
class="snippet-code">
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
No comments:
Post a Comment