搜索

首页  >  问答  >  正文

javascript - es6 export 的一个理解问题

各位乡亲,在看阮一峰老师的 es6入门教程的时候,有一段看了多次也没有理解

需要特别注意的是,export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。

// 报错
export 1;

// 报错
var m = 1;
export m;

上面两种写法都会报错,因为没有提供对外的接口。第一种写法直接输出1,第二种写法通过变量m,还是直接输出1。1只是一个值,不是接口。正确的写法是下面这样。

// 写法一
export var m = 1;

// 写法二
var m = 1;
export {m};

// 写法三
var n = 1;
export {n as m};

上面三种写法都是正确的,规定了对外的接口m。其他脚本可以通过这个接口,取到值1。它们的实质是,在接口名与模块内部变量之间,建立了一一对应的关系。

在这里这个“接口”到底指的是什么?
对于

// 报错
function f() {}
export f;

// 正确
export function f() {};

差别到底在哪里?

世界只因有你世界只因有你2768 天前601

全部回复(1)我来回复

  • 世界只因有你

    世界只因有你2017-05-19 10:24:15

    你不妨直接看一看语法是如何规定的:

    export { name1, name2, …, nameN };
    export { variable1 as name1, variable2 as name2, …, nameN };
    export let name1, name2, …, nameN; // also var
    export let name1 = …, name2 = …, …, nameN; // also var, const
    
    export expression;
    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 …;

    取自 https://developer.mozilla.org...

    ta说的接口就是 expression 即表达式,用通俗的话说就是不是常量(固定值)的那么一种东西。

    另外,你可以用default这样写:

    export default m = 1

    因为 m = 1 是一个表达式。其它地方你可以直接 import m from ... 然后 m 的值就是1.

    回复
    0
  • 取消回复