因为我读这里,ES2015可以导出var
,const
,let
,function
,class
和default
.
export var myVar1 = ...; export let myVar2 = ...; export const MY_CONST = ...; export function myFunc() { ... } export function* myGeneratorFunc() { ... } export class MyClass { ... }
但我不明白为什么.在我的外行看来,应该有named exports
和default exports
.
您输出的类型似乎并不重要.我的意思是,当你export default
,你指定类型?不,你没有,它的工作原理.此外,它还能有什么区别出口var
或let
?它有什么区别export const
?导入模块时,无论如何它都是不可变的(AFAIK).
那么,为什么必须指定导出的类型?
您不必指定导出的类型 - 您必须在模块中指定本地绑定的类型.
应该有命名导出和默认导出.
有:
export {localX as exportedX}; export {localX as default};
你给出的所有这些例子实际上都是shorthands,它们都声明一个局部变量并以相同的名称导出它:
var myVar1 = …; let myVar2 = …; const MY_CONST = …; function myFunc() { … } function* myGeneratorFunc() { … } class MyClass { … } export { myVar, myVar2, MY_CONST, myFunc, myGeneratorFunc, myClass };
它有什么区别
export const
?导入模块时,无论如何都是不可变的.
你不能在你的模块中重新分配它.导出不会导出值1,它会将绑定导出到本地变量.实际上,进口不是一成不变的,它们只是不可写的.
// example.js export var value; // this one would not work with `const` export default function(x) { value = x; }
// main.js import write, {value} from 'example'; console.log(value); // undefined write(42); console.log(value); // 42
1:在这方面,默认出口有点特殊.该export default …
声明确实让你直接导出一个表达式(或匿名函数/功能*/类的价值宣言),但幕后它实际上与名称模块中创建一个局部变量*default*
.