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

Answer from flatline on Stack Overflow
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Global_Objects › Function › call
Function.prototype.call() - JavaScript - MDN Web Docs
Note: This function is almost identical to apply(), except that the function arguments are passed to call() individually as a list, while for apply() they are combined in one object, typically an array — for example, func.call(this, "eat", "bananas") vs.
Discussions

Function invocation...why use .call() and .apply() ?
The methods call, bind, and apply exist to supplement the relationship between a function and the scope of this inside the function at execution time. this is undefined in a function, due its execution context, when the function is not aware of the object from which the function is called. When that does happen this resolves up the scope chain until it reaches an object in global scope, typically window in the browser. The three methods allow a developer to manually define the execution context of a function so that this is bound to the context of the stated object. This problem more commonly occurs due to OOP programming patterns and the developers misunderstanding between scope and inheritance. Personally, I couldn't tell you the difference between the three methods without having to look them up because I never use them. I have stated exactly this during job interviews in the past. Never having to use these three methods is blessing that comes from avoiding inheritance in this language and/or only associating inheritance with event execution. These methods are a hacky work around that complicates the understanding of code from a high level. I understand that there are many people who need these because they absolutely cannot imaging programming without inheritance. That is unfortunately the world we live in. More on reddit.com
🌐 r/javascript
32
34
October 24, 2015
What is the difference between JavaScript’s `apply` and `call` methods? - TestMu AI Community
What is the difference between JavaScript’s `apply` and `call` methods · When invoking a function like func.apply() versus func.call(), how do these two differ in handling arguments? Are there any performance differences between them, and when should you prefer using call over apply or vice ... More on community.testmuai.com
🌐 community.testmuai.com
0
May 20, 2025
What are some use cases for call, apply, and/or bind?
The basic idea behind call/apply/bind is the same: explicitly set function parameters including this. The context changes a bit, but the use cases will all be niche instances when the normal ways of setting function parameters (i.e. placing them between the parentheses or to the left of the dot for this) are not sufficient. Apply First, apply. You will almost certainly never need apply. Why? Because the common use case has been supplanted by a new syntax: the spread operator (...). In the past, if you had your parameters in an array, apply was the way to get them into a function. const nums = [1, 2, 3]; const largest = Math.max.apply(null, nums); console.log(largest); // 3 These days, spread is easier to write and read. const nums = [1, 2, 3]; const largest = Math.max(...nums); console.log(largest); // 3 Call Okay, call works a lot like just, well, calling a function. The only difference is that the this moves from the left of the dot to the first parameter between the parentheses. const nums = [1, 2, 3]; console.log(nums.includes(2)); // true console.log(Array.prototype.includes.call(nums, 2)); // true When is this useful? Mostly never. Cases occasionally come up. Sometimes you want to call one object's method on a different object. Call lets you do that. It is always very technical and niche. Bind Bind is probably the most useful of the three, which isn't saying much. It allows you to pass parameters to a function before you call it, creating a new function with those parameters baked in. const nums = [1, 2, 3]; const numsIncludesThree = Array.prototype.includes.bind(nums, 3); console.log(numsIncludesThree()); // true nums.pop(); console.log(numsIncludesThree()); // false This is kind of neat. It allows you to build up functions out of parameters, and is related to awesome concepts like "partially applying" functions, "factory" functions, and "currying". That said, you don't actually see bind used all that often. It is clunky compared to other options like lodash's partial , and most people who write code like this also religiously avoid using this, which will always be the first parameter bind takes. For awhile it was common to see people use bind in their class definitions: class User { constructor(name) { this.name = name; this.greet = this.greet.bind(this); } greet() { console.log(`Hello, ${this.name}!`); } } This allows you to use your class method in circumstances where the this would not be set, for example as a callback to another function like an event listener or setTimeout. const user = new User('Sue'); setTimeout(user.greet, 1000); // Hello, Sue! This approach has mostly fallen out of fashion though. Using bind in the constructor is just fighting the way JS works because you wish it worked like a different language, people don't even use classes all that often anymore, and there are more straightforward ways to accomplish the same behavior. setTimeout(() => { user.greet(); }, 1000); // Hello, Sue! (no bind required) TLDR If you need them, you'll know. But you mostly won't. More on reddit.com
🌐 r/learnjavascript
14
11
September 18, 2022
.call vs .bind vs .apply...ELI5?

call calls a function with individual arguments:

fn.call( thisArg, 1, 2, 3 );      // fn( 1, 2, 3 ); with `this` in fn set to `thisArg`

apply calls a function with an array of arguments:

fn.apply( thisArg, [ 1, 2, 3 ] ); // fn( 1, 2, 3 ); with `this` in fn set to `thisArg`

bind doesn't call the function at all, but binds scope and arguments to a function so that when you call the resulting function the original one is called:

var newFn = fn.bind( thisArg, 1, 2, 3 ); // fn doesn't run yet
newFn();    // calls fn.call( thisArg, 1, 2, 3 );
newFn( 4 ); // calls fn.call( thisArg, 1, 2, 3, 4 );

So call vs apply just comes down to how you have your data (well that and call is much faster). Use bind when you want to do something later

More on reddit.com
🌐 r/learnjavascript
3
14
May 28, 2015
🌐
GeeksforGeeks
geeksforgeeks.org › javascript › what-is-the-difference-between-call-and-apply-in-javascript
Call Vs Apply in JavaScript - GeeksforGeeks
November 3, 2025 - The apply() method is used to write methods, which can be used on different objects. It is different from the function call() because it takes arguments as an array. ... <body style="text-align:center;"> <h1 style="color:green;"> GeeksForGeeks ...
🌐
Medium
medium.com › @jhawleypeters › javascript-call-vs-apply-vs-bind-61447bc5e989
Javascript Function Methods: Call vs Apply vs Bind | by Jonathan Hawley-Peters | Medium
November 22, 2019 - Call and apply are very similar: both invoke the function they are called on, and take a ‘this’ argument as their first argument.
🌐
DEV Community
dev.to › codecraftjs › understanding-call-apply-and-bind-essential-methods-in-javascript-d62
Understanding Call, Apply, and Bind: Essential Methods in JavaScript - DEV Community
May 23, 2023 - The call() and apply() methods are used to immediately invoke a function with a specified this value and arguments, while the bind() method returns a new function with a specified this value that can be called later.
🌐
freeCodeCamp
freecodecamp.org › news › understand-call-apply-and-bind-in-javascript-with-examples
How to Use the Call, Apply, and Bind Functions in JavaScript – with Code Examples
April 3, 2025 - The only difference between call and apply is the difference in how arguments are passed. In apply, arguments you can pass an argument as an array literal or a new array object. ... thisObj is an object or a value that needs to be replaced with ...
Find elsewhere
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Global_Objects › Function › apply
Function.prototype.apply() - JavaScript - MDN Web Docs
July 10, 2025 - Note: This function is almost identical to call(), except that the function arguments are passed to call() individually as a list, while for apply() they are combined in one object, typically an array — for example, func.call(this, "eat", "bananas") vs.
🌐
Codingem
codingem.com › home › javascript call() vs apply(): a complete guide (examples)
JavaScript call() vs apply(): A Complete Guide (Examples)
July 10, 2025 - In JavaScript, apply() takes arguments as arrays but call() arguments are comma-separated list. Both methods borrow functions to objects.
🌐
W3Schools
w3schools.com › js › js_function_apply.asp
JavaScript Function apply() Method
The call() method takes arguments separately. The apply() method takes arguments as an array.
🌐
GeeksforGeeks
geeksforgeeks.org › javascript › explain-call-apply-and-bind-methods-in-javascript
Explain call(), apply(), and bind() methods in JavaScript - GeeksforGeeks
The only difference from the bind polyfill is that MyCall does not return a new function - just like JavaScript’s built-in call(). The apply() method calls a function immediately and sets this to the first argument passed.
Published   January 22, 2026
🌐
Reddit
reddit.com › r/javascript › function invocation...why use .call() and .apply() ?
r/javascript on Reddit: Function invocation...why use .call() and .apply() ?
October 24, 2015 -

Background: I recently had a job interview in which I was asked about the different ways to call a function. I didn't answer correctly because I've essentially ignored the .call() and .apply() options when studying JavaScript. I understand that you can do this, but I can't really think of a scenario that I'd need to use this format.

Is this a pattern that you use/should I be using it? Could someone give an example of when one might want to?

Top answer
1 of 5
6
The methods call, bind, and apply exist to supplement the relationship between a function and the scope of this inside the function at execution time. this is undefined in a function, due its execution context, when the function is not aware of the object from which the function is called. When that does happen this resolves up the scope chain until it reaches an object in global scope, typically window in the browser. The three methods allow a developer to manually define the execution context of a function so that this is bound to the context of the stated object. This problem more commonly occurs due to OOP programming patterns and the developers misunderstanding between scope and inheritance. Personally, I couldn't tell you the difference between the three methods without having to look them up because I never use them. I have stated exactly this during job interviews in the past. Never having to use these three methods is blessing that comes from avoiding inheritance in this language and/or only associating inheritance with event execution. These methods are a hacky work around that complicates the understanding of code from a high level. I understand that there are many people who need these because they absolutely cannot imaging programming without inheritance. That is unfortunately the world we live in.
2 of 5
2
When a function is called JavaScrip automatically binds the context and arguments. Call and apply are ways of calling a function and explicitly setting those bindings rather than letting them be automatically bound.
🌐
Tania's Website
taniarascia.com › understanding this, bind, call, and apply in javascript
Understanding This, Bind, Call, and Apply in JavaScript | Tania Rascia's Website
In this article, you learned about this in JavaScript, and the many different values it might have based on implicit runtime binding, and explicit binding through bind, call, and apply. You also learned about how the lack of this binding in arrow functions can be used to refer to a different context.
🌐
GreatFrontEnd
greatfrontend.com › questions › quiz › whats-the-difference-between-call-and-apply
What's the difference between `.call` and `.apply` in JavaScript? | Quiz Interview Questions with Solutions
September 5, 2021 - JavaScript · Edit on GitHub · .call and .apply are both used to invoke functions with a specific this context and arguments. The primary difference lies in how they accept arguments: .call(thisArg, arg1, arg2, ...): Takes arguments individually. ...
🌐
Educative
educative.io › answers › what-is-the-difference-between-call-apply-bind
What is the difference between call() apply() & bind() ?
call: binds the this value, invokes the function, and allows you to pass a list of arguments. apply: binds the this value, invokes the function, and allows you to pass arguments as an array.
🌐
FrontendLead
frontendlead.com › home › trivia questions › call vs apply: understanding the difference - frontendlead
Call vs Apply: Understanding the Difference - FrontendLead
February 26, 2024 - JavaScript call vs apply: Learn the distinctions between these two methods and discover when to use each one in your code.
🌐
SheCodes
shecodes.io › athena › 65300-what-is-the-difference-between-bind-call-and-apply-in-javascript
[JavaScript] - What is the difference between bind, call, and apply in JavaScript?
Learn how to use bind, call, and apply in JavaScript to set the value of this in a function and call the function with a given this value.
🌐
TestMu AI Community
community.testmuai.com › ask a question
What is the difference between JavaScript’s `apply` and `call` methods? - TestMu AI Community
May 20, 2025 - When invoking a function like func.apply() versus func.call(), how do these two differ in handling arguments? Are there any performance differences between them, and when should you prefer using call over apply or vice v…
🌐
LinkedIn
linkedin.com › pulse › what-difference-between-call-apply-bind-muhammad-rizwan
What is the difference between call, apply and bind?
December 9, 2022 - It takes two arguments: the value ... The apply method is similar to the call method, but instead of specifying the arguments to the function individually, it takes an array of arguments to be passed to the function...
🌐
OpenReplay
blog.openreplay.com › choosing-call-apply-bind-javascript-guide
Choosing Between call(), apply(), and bind() in JavaScript: A Developer's Guide
Each method serves a specific purpose in managing function context. While call() and apply() provide immediate execution with different argument formats, bind() creates reusable functions with fixed contexts.