HiveBrain v1.2.0
Get Started
← Back to all entries
gotchajavascriptCritical

What is the difference between call and apply?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
andbetweenthedifferencecallwhatapply

Problem

What is the difference between using Function.prototype.apply() and Function.prototype.call() to invoke a function?
const func = function() {
alert("Hello world!");
};


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?

Solution

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 apply and call.

Pseudo syntax:

theFunction.apply(valueForThis, arrayOfArgs)

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

There is also, as of ES6, the possibility to spread the array for use with the call function, you can see the compatibilities here.

Sample 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

Context

Stack Overflow Q#1986896, score: 4047

Revisions (0)

No revisions yet.