Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
export
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since mayo de 2018.
La declaraciónexport se utiliza al crear módulos de JavaScript para exportar funciones, objetos o tipos de dato primitivos del módulo para que puedan ser utilizados por otros programas con la sentenciaimport.
Los módulos exportados están enstrict mode tanto si se declaran así como si no. La sentencia export no puede ser utilizada en scripts embebidos.
In this article
Sintaxis
export { name1, name2, …, nameN };export { variable1 as name1, variable2 as name2, …, nameN };export let name1, name2, …, nameN; // también varexport let name1 = …, name2 = …, …, nameN; // también var, constexport function FunctionName(){...}export class ClassName {...}export default expression;export default function (…) { … } // también class, function*export default function name1(…) { … } // también class, function*export { name1 as default, … };export * from …;export { name1, name2, …, nameN } from …;export { import1 as name1, import2 as name2, …, nameN } from …;export { default } from …;Descripción
Existen dos tipos diferentes de exportación ,nombrada ypor defecto. Se pueden tener varias exportaciones nombradas por módulo pero sólo una exportación por defecto. Cada tipo corresponde a una de las sintaxis siguientes:
Exports con nombre:
js// exporta la función previamente declaradaexport { myFunction };// exporta una constanteexport const foo = Math.sqrt(2);Exports por defecto (function):
jsexport default function () {}Exports por defecto (class):
jsexport default class {}
Los export con nombre son útiles cuando se necesitan exportar múltiples valores. Durante el import, es obligatorio usar el mismo nombre que el correspondiente objeto.
Pero un export por defecto puede ser importado con cualquier nombre, por ejemplo:
export default k = 12; // en el archivo test.jsimport m from "./test"; // notese que tenemos la libertad de usar import m en lugar de import k, porque k era el export por defectoconsole.log(m); // escribirá 12Sólo puede haber un export por defecto.
La siguiente sintaxis no exporta un export por defecto del módulo importado:
export * from …;Si necesita exportar por defecto, escriba lo siguiente en su lugar:
import mod from "mod";export default mod;Ejemplos
>Usando exports con nombre
En el módulo, podremos usar el siguiente código:
// module "my-module.js"function cube(x) { return x * x * x;}const foo = Math.PI + Math.SQRT2;var graph = { options: { color: "white", thickness: "2px", }, draw: function () { console.log("From graph draw function"); },};export { cube, foo, graph };De esta forma, en otro script, podemos tener:
//You should use this script in html with the type module ,//eg ''<script type="module" src="demo.js"></script>",//open the page in a httpserver,otherwise there will be a CORS policy error.//script demo.jsimport { cube, foo, graph } from "my-module";graph.options = { color: "blue", thickness: "3px",};graph.draw();console.log(cube(3)); // 27console.log(foo); // 4.555806215962888Usando el export por defecto
Si queremos exportar un sólo valor o tener uno por defecto para nuestro módulo, podemos usar un export por defecto:
// module "my-module.js"export default function cube(x) { return x * x * x;}De esta forma la importación de un export default será sumamemte sencilla:
import cube from "my-module";console.log(cube(3)); // 27Tenga en cuenta que no es posible usarvar,let oconst conexport default.
Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-exports> |
Compatibilidad con navegadores
Vea también
import- ES6 in Depth: Modules, publicación del blog de Hacks por Jason Orendorff
- ES modules: A cartoon deep-dive, publicación del blog de Hacks por Lin Clark
- Libro de Axel Rauschmayer: "Exploring JS: Modules"