gpt4 book ai didi

javascript - 为什么必须在 ES2015 中指定导出的类型(let、var、const...)?

转载 作者:行者123 更新时间:2023-12-04 16:51:48 24 4
gpt4 key购买 nike

因为我是reading here , ES2015 允许你导出 var , const , let , function , classdefault .

export var myVar1 = ...;
export let myVar2 = ...;
export const MY_CONST = ...;

export function myFunc() {
...
}
export function* myGeneratorFunc() {
...
}
export class MyClass {
...
}

但我不明白为什么。在我的外行看来,应该有 named exportsdefault exports .

您要导出的类型似乎并不重要。我的意思是,当你 export default ,你指定类型吗?不,你没有,它有效。此外,导出 var 有什么不同?或 let ?它对 export const 有什么影响? ?当您导入一个模块时,它无论如何都是不可变的(AFAIK)。

那么,为什么要指定导出的类型呢?

最佳答案

您不必指定导出的类型 - 您必须在模块中指定本地绑定(bind)的类型。

there should be named exports and default exports.



有:
export {localX as exportedX};
export {localX as default};

您给出的所有这些示例实际上都是简写,它们都声明了一个局部变量并以相同的名称导出它:
var myVar1 = …;
let myVar2 = …;
const MY_CONST = …;
function myFunc() {

}
function* myGeneratorFunc() {

}
class MyClass {

}

export {
myVar,
myVar2,
MY_CONST,
myFunc,
myGeneratorFunc,
myClass
};

What difference can it make to export const? When you import a module it's immutable anyway.



你不能在你的模块内重新分配它。导出不会导出 value1,它会将绑定(bind)导出到您的局部变量。导入实际上不是不可变的,它们只是不可写的。
// 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* 的局部变量.

关于javascript - 为什么必须在 ES2015 中指定导出的类型(let、var、const...)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34381162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com