MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

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

export 可以指派 function, objects 或 變數 給外部檔案引用。

附註: 還不能支援各個瀏覽器,就是你心裡第一個浮現的那個慢一拍的東西。最好還是輔用 transpile 工具轉譯一次,例如  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 …;
nameN
外部檔案使用 import 時,用於辨認的名稱。

使用說明

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

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

輸出宣告過的變數優點在於輸出多個值,而且別的 js 檔案在 import 時可以根據相同名稱去使用。

至於預設 export  可以輸出 function, class, object 等等。使用時可以當作 module 主體或是讓外部 js 有一個最簡單的 import 用法。

另外要注意的是,如果想 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。

Specifications

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.
Draft  

Browser compatibility

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

文件標籤與貢獻者

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