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

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 …;
nameN
外部檔案使用 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。

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

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,