We're looking for a person or people to help audit MDN to find places we could speed up. Is this you or someone you know? Check out the RFP: https://mzl.la/2IHcMiE

翻譯不完整。請協助 翻譯此英文文件

export 可以指派 函式,物件或變數給外部檔案引用。

附註: 目前只有Safari跟Chrome支援這個功能.但是許多transpiler已經支援了, 例如  Traceur CompilerBabel or Rollup.


export { name1, name2, …, nameN };
export { variable1 as name1, variable2 as name2, …, nameN };
// 用 var, const 也通
export let name1, name2, …, nameN;
export let name1 = …, name2 = …, …, nameN;

// 底下的 function 用 class, function* 也可以
export default expression;
export default function (…) { … } 
export default function name1(…) { … }

export { name1 as default, … };
export * from …;
export { name1, name2, …, nameN } from …;
export { import1 as name1, import2 as name2, …, nameN } from …;
外部檔案使用 import 時,用於辨認的名稱。


有兩種使用 export 的方式,都包含在上述的語法裡面,底下只是分類。

  • ? Named exports:
    // 前面已經宣告的函式可以這樣輸出
    export { myFunction }; 
    // 輸出常數
    export const foo = Math.sqrt(2); 
  • 預設 export (一個 js 檔案只能有一個):
    export default function() {} 
    // 或是 'export default class {}'
    // 結尾不用分號

Named exports在輸出多個值的時候很有用,在import的時候, 會強制根據使用相同的物件名稱.

但如果是default export 則可以用任意的名字輸出.

export default k = 12; // 在test.js中這樣子寫

import m from './test' // 注意這邊因為export default的關係, 可以用任意名字import 原先的k出來

console.log(m);        // will log 12

另外要注意的是,如果想 import 的同時 export 出去,
並?不會 export 預設輸出。

export * from …;

你必須額外 import 它的預設輸出,然後再用 export

import mod from "mod";
export default mod;



在 module 內可以這樣使用:

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

外部檔案如何使用 (cf. import):

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


如果我們要輸出單獨的 function, object, class 或當做 fallback 值來輸出的話,就可以用預設輸出:

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

外部檔案的 import 用法:

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

Note 注意預設輸出不能使用 var, let , const。


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.

Browser compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support No support No support No support No support No support
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 No support

See also


 此頁面的貢獻者: DalaneGarmin, MOSapeizer
 最近更新: DalaneGarmin,