And*_*ena 5 javascript commonjs node-modules ecmascript-6 ecmascript-2015
因为我读这里,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 {
...
}
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么.在我的外行看来,应该有named exports和default exports.
您输出的类型似乎并不重要.我的意思是,当你export default,你指定类型?不,你没有,它的工作原理.此外,它还能有什么区别出口var或let?它有什么区别export const?导入模块时,无论如何它都是不可变的(AFAIK).
那么,为什么必须指定导出的类型?
您不必指定导出的类型 - 您必须在模块中指定本地绑定的类型.
应该有命名导出和默认导出.
有:
export {localX as exportedX};
export {localX as default};
Run Code Online (Sandbox Code Playgroud)
你给出的所有这些例子实际上都是shorthands,它们都声明一个局部变量并以相同的名称导出它:
var myVar1 = …;
let myVar2 = …;
const MY_CONST = …;
function myFunc() {
…
}
function* myGeneratorFunc() {
…
}
class MyClass {
…
}
export {
myVar,
myVar2,
MY_CONST,
myFunc,
myGeneratorFunc,
myClass
};
Run Code Online (Sandbox Code Playgroud)
它有什么区别
export const?导入模块时,无论如何都是不可变的.
你不能在你的模块中重新分配它.导出不会导出值1,它会将绑定导出到本地变量.实际上,进口不是一成不变的,它们只是不可写的.
// example.js
export var value; // this one would not work with `const`
export default function(x) {
value = x;
}
Run Code Online (Sandbox Code Playgroud)
// main.js
import write, {value} from 'example';
console.log(value); // undefined
write(42);
console.log(value); // 42
Run Code Online (Sandbox Code Playgroud)
1:在这方面,默认出口有点特殊.该export default …声明确实让你直接导出一个表达式(或匿名函数/功能*/类的价值宣言),但幕后它实际上与名称模块中创建一个局部变量*default*.
声明变量、函数或新的 const 值与导出没有任何关系。var、let 或 const 在模块内的行为是不同的,因此您需要指出它是什么。导出与否是另一回事。
这些值从模块外部是不可变的,但从内部(例如从另一个导出函数)不可变。
export let mutable = 1;
export const immutable = 2;
export function change() {
mutable = 11; //works
immutable = 22; //throws, the value is const
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2598 次 |
| 最近记录: |