Home Python C Language C ++ HTML 5 CSS Javascript Java Kotlin SQL DJango Bootstrap React.js R C# PHP ASP.Net Numpy Dart Pandas Digital Marketing

Function Declarations vs. Expressions in JavaScript


Functions are essential in JavaScript for structuring code into reusable blocks. JavaScript provides two primary ways to define functions: Function Declarations and Function Expressions. While both allow you to define functions, they differ in syntax, behavior, and use cases. In this article, we'll explore the differences between function declarations and expressions with examples.

1. Function Declarations

A function declaration is a way to define a function using the function keyword, followed by the function's name, parameters, and body. This method of defining a function is hoisted, meaning the function can be called before its declaration in the code.

Syntax:

      function functionName(parameters) {
        // Code to be executed
      }
    

Example: Function declaration

      function greet() {
        console.log("Hello, world!");
      }

      greet(); // Output: Hello, world!
    

In this example, the greet function is declared using a function declaration. The function can be called at any point in the code after or before its definition due to hoisting.

2. Function Expressions

A function expression defines a function as part of an expression, often assigned to a variable. Unlike function declarations, function expressions are not hoisted, meaning the function can only be called after it has been defined.

Syntax:

      const functionName = function(parameters) {
        // Code to be executed
      };
    

Example: Function expression

      const greet = function() {
        console.log("Hello, world!");
      };

      greet(); // Output: Hello, world!
    

In this example, the greet function is created as a function expression and assigned to the variable greet. It can only be called after the function expression is evaluated and assigned.

Key Differences Between Function Declarations and Expressions

3. Hoisting Example

To better understand hoisting, let's compare calling a function declared using a declaration and an expression before they are defined.

Example with function declaration:

      greet(); // Output: Hello, world!

      function greet() {
        console.log("Hello, world!");
      }
    

In the above example, the function greet is called before its declaration, and it works because function declarations are hoisted to the top of their scope.

Example with function expression:

      greet(); // Error: greet is not a function

      const greet = function() {
        console.log("Hello, world!");
      };
    

In this example, calling greet before its assignment results in an error because function expressions are not hoisted.

4. Anonymous Functions and Named Function Expressions

In function expressions, the function can be anonymous (without a name) or named. Anonymous functions are commonly used in situations like callbacks or event handling.

Anonymous Function Expression Example:

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

Named Function Expression Example:

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

In the named function expression example, the function is still anonymous within the expression but is given a name ("sayHello"). This can help with debugging, as the name appears in stack traces.

5. Immediately Invoked Function Expressions (IIFE)

A common use of function expressions is in Immediately Invoked Function Expressions (IIFE). This is when a function is defined and immediately called in a single expression. This technique is often used to create a private scope.

Example of IIFE:

      (function() {
        console.log("This function runs immediately.");
      })();
      // Output: This function runs immediately.
    

IIFE is a function expression wrapped in parentheses, followed by another set of parentheses to invoke it. This pattern ensures that the function runs immediately after it is defined.

Summary of Function Declarations vs. Expressions

Conclusion

Understanding the differences between function declarations and function expressions is essential for writing clean, efficient, and maintainable JavaScript code. Function declarations are straightforward and useful for defining reusable functions, while function expressions provide flexibility and are often used in situations like callbacks and event handling.





Advertisement





Q3 Schools : India


Online Complier

HTML 5

Python

java

C++

C

JavaScript

Website Development

HTML

CSS

JavaScript

Python

SQL

Campus Learning

C

C#

java