Difference Between Default & Named Exports in JavaScript (original) (raw)

Last Updated : 24 Jan, 2025

In JavaScript, exports allow you to share code between modules. There are two main types: default exports and named exports.

Named Exports

Named exports let us export several things from a module, giving each one a specific name. This makes it clear which thing we're importing into other modules. Named exports are useful when we need to share multiple functionalities.

JavaScript `

// math.js: export function add(a, b) { return a + b; }

export function subtract(a, b) { return a - b; }

JavaScript

// app.js:

import { add, subtract } from './math.js';

console.log(add(2, 3));
console.log(subtract(5, 2));

`

**Output:

5
3

Default Exports

Default exports in JavaScript allow a module to export a single value or entity as the default export. Unlike named exports, which allow you to export multiple values from a module, default exports allow you to export only one value per module.

JavaScript `

// math.js //Exporting a function as the default export export default function add(a, b) { return a + b; }

JavaScript

//app.js // Importing the default export import addFunction from './math.js';

console.log(addFunction(2, 3));

`

**Output:

5

Named and Default Exports Together

In JavaScript, you can combine named exports and a default export within the same module. This approach allows you to export multiple functionalities, with one serving as the primary export and others as supplementary exports.

**Example: The below code explainNamed and Default Exports Together.

JavaScript ``

// utils.js

// Named exports export function square(x) { return x * x; }

export function double(x) { return x * 2; }

// Default export export default function greet(name) { return Hello, ${name}!; }

`` JavaScript `

// main.js

// Importing both named and default exports import greet, { square, double } from './math.js';

console.log(greet('Alice')); console.log(square(4)); console.log(double(5));

`

**Output:

Hello, Alice!
16
10

Difference between Named exports and Default exports

Named exports Default exports
With named exports, you can export multiple variables, functions, or classes from a single module. Default export is used to export a single value from a module. This value can be a function, object, class, etc.
Each exported entity is given a name, and you import them using those exact names. Unlike named exports, there can only be one default export per module.
To export a variable, function, or class using named exports, you typically use the export keyword followed by the name of the entity you want to export. To export a value as the default export, you typically use the export default syntax.
When importing named exports, you enclose the names in curly braces {} and use the exact names specified during export. When importing the default export, you don't need to use curly braces {}. Instead, you can specify any name for the imported value.