Skip to main content

Command Palette

Search for a command to run...

Function Declaration vs Function Expression in JavaScript

Published
•2 min read•View as Markdown
Function Declaration vs Function Expression in JavaScript

Introduction

JavaScript provides multiple ways to define functions, and two common approaches are Function Declarations and Function Expressions. While both serve the same purpose—defining reusable blocks of code—there are key differences in how they are executed, hoisted, and used.

Function Declaration

A function declaration is when a function is defined using the function keyword at the top level of the code.

Example:

function greet() {
    console.log("Hello, World!");
}
greet();  // Output: Hello, World!

Function Expression

A function expression is when a function is assigned to a variable.

Example:

const greet = function() {
    console.log("Hello, World!");
};
greet();  // Output: Hello, World!

Flowchart:

Comparison Table: Function Declaration vs Function Expression

FeatureFunction DeclarationFunction Expression
Syntaxfunction name() {}const name = function() {};
HoistingYes (can be called before declaration)No (cannot be called before declaration)
Anonymous FunctionNo (must have a name)Yes (can be anonymous)
Best Use CaseWhen defining reusable functions at the top levelWhen defining inline or callback functions

Conclusion

Understanding the differences between function declarations and function expressions is crucial for writing efficient JavaScript code. Function declarations are hoisted, meaning they can be called before they are defined, making them ideal for defining reusable functions at the top level of your code. On the other hand, function expressions are not hoisted and are often used for inline functions, callbacks, and when assigning functions to variables. Choosing the right approach depends on the use case—function declarations work well for structured, global functions, while function expressions provide more flexibility, especially in scenarios like event handling and closures. By mastering both, you can write cleaner and more modular JavaScript code. 🚀