What is “export default” in javascript?

What is “export default” in javascript?

File: SafeString.js
// Build out our basic SafeString type
function SafeString(string) {
this.string = string;

SafeString.prototype.toString = function() {
return “” + this.string;

export default SafeString;

I have never seen export default before. Are there any equivalent stuff for export default that can be easier to understand?


Solution 1:

It’s part of the ES6 module system, described here. There is a helpful example in that documentation, also:

If a module defines a default export:

export default function() { console.log("hello!") }

then you can import that default export by omitting the curly braces:

import foo from "foo";
foo(); // hello!

Update: As of June 2015, the module system is defined in §15.2 and the export syntax in particular is defined in §15.2.3 of the ECMAScript 2015 specification.

Solution 2:

export default is used to export a single class, function or primitive from a script file.

The export can also be written as

export default function SafeString(string) {
  this.string = string;

SafeString.prototype.toString = function() {
  return "" + this.string;

This is used to import this function in another script file

Say in app.js, you can

import SafeString from './handlebars/safe-string';

A little about export

As the name says, it’s used to export functions, objects, classes or expressions from script files or modules


export function cube(x) {
  return x * x * x;
export const foo = Math.PI + Math.SQRT2;

This can be imported and used as


import { cube, foo } from 'Utilities';
console.log(cube(3)); // 27
console.log(foo);    // 4.555806215962888


import * as utilities from 'Utilities';
console.log(utilities.cube(3)); // 27
console.log(utilities.foo);    // 4.555806215962888

When export default is used, this is much simpler. Script files just exports one thing.

export default function cube(x) {
  return x * x * x;

and used as

import Cube from 'cube';
console.log(Cube(3)); // 27

Solution 3:

export default function(){} can be used when the function has no name. There can only be one default export in a file. The alternative is a named export.

This page describes export default in detail as well as other details about modules that I found very helpful.

Solution 4:

As explained on this MDN page

There are two different types of export, named and default. You can
have multiple named exports per module but only one default
export[…]Named exports are useful to export several values. During
the import, it is mandatory to use the same name of the corresponding
object.But a default export can be imported with any name

For example:

let myVar; export default myVar = 123; // in file my-module.js

import myExportedVar from './my-module' //  we have the freedom to use 'import myExportedVar' instead of 'import myVar' because myVar was defined as default export

console.log(myExportedVar);        // will log 123