非常教程

JavaScript参考手册

声明 | Statements

export

导出

export语句用于创建JavaScript模块以从模块中导出函数,对象或原始值,以便其他程序可以使用import语句。

此功能目前仅在Safari中本地实现。它在许多转译器中实现,如Traceur编译器,Babel或Rollup。

语法

export { name1, name2, …, nameN };
export { variable1 as name1, variable2 as name2, …, nameN };
export let name1, name2, …, nameN; // also var, function
export let name1 = …, name2 = …, …, nameN; // also var, const

export default expression;
export default function (…) { … } // also class, function*
export default function name1(…) { … } // also class, function*
export { name1 as default, … };

export * from …;
export { name1, name2, …, nameN } from …;
export { import1 as name1, import2 as name2, …, nameN } from …;

nameN要导出的标识符(以便可以通过import另一个脚本导入)。

描述

有两种不同类型的出口。每种类型都对应于以上语法之一:

  • Named exports: // exports a function declared earlier export { myFunction }; // exports a constant export const foo = Math.sqrt(2);
  • Default exports (function): export default function() {}
  • Default exports (class): export default class {}

命名导出对于导出多个值很有用。在导入过程中,可以使用相同的名称来引用相应的值。

关于默认导出,每个模块只有一个默认导出。默认导出可以是函数,类,对象或其他任何东西。此值将被视为“主”导出值,因为它将是最简单的导入值。

导出默认值:以下语法不会从导入的模块默认导出:

export * from …;

如果您需要导出默认值,请改为输入以下内容:

import mod from "mod";
export default mod;

例子

使用命名的导出

在模块中,我们可以使用下面的代码:

// module "my-module.js"
function cube(x) {
  return x * x * x;
}
const foo = Math.PI + Math.SQRT2;
export { cube, foo };

这样,在另一个脚本(参见import)中,我们可以:

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

使用默认导出

如果我们想要导出单个值或为我们的模块设置回退值,我们可以使用默认导出:

// module "my-module.js"
export default function cube(x) {
  return x * x * x;
}

然后,在另一个脚本中,将直接导入默认导出:

import cube from 'my-module';
console.log(cube(3)); // 27

请注意,这是不可能使用varletconstexport default

规格

Specification

Status

Comment

ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Exports' in that specification.

Standard

Initial definition.

ECMAScript Latest Draft (ECMA-262)The definition of 'Exports' in that specification.

Living Standard

浏览器兼容性

Feature

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari

Basic support

61 (60 w/ flag)

No support (54 w/ flag)

No support (15 w/flag)

No support

10.1

Feature

Android

Chrome for Android

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

Basic support

No support

No support

No support

No support

No support

10.3

JavaScript

JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络