【发布时间】:2019-01-17 17:16:33
【问题描述】:
简单的导出以函数/变量/类声明结束,例如
export default hello
想象hello 是hello 模块中的一个函数。在要导出的模块中调用export default hello() 和在导入import hello from "./hello" 的模块中调用hello() 有什么区别?
除了第二个选项需要在导入hello的模块中初始化(调用)函数之外,似乎没有什么区别。
// hello.js
function hello () {
console.log("hello")
}
// 1st option function declaration
export default hello
// 2nd option - run function on export
export default hello()
// index.js
import hello from "./hello";
// 1st option initialise (calling)
hello();
// 2nd option - no calling needed
在整个网络上进行了搜索,但找不到可能的副作用或哪些是处理包含和导出函数的模块的更好方法。
【问题讨论】:
-
这完全取决于你的函数实际做了什么,以及它是否被设计为被多次调用。如果该函数是一个随机实用程序,那么预先调用它是没有意义的。对于一般情况,没有正确或错误的答案。
-
谢谢。那很有帮助。您是否会说,第二个选项也是进行导出的正确方法(当然取决于用例)??
-
这取决于您的用户想要导入的东西是函数,还是函数返回的任何值。如果您的文件是
function getHello(){ return hello; } export default getHello(),它将与export default hello;相同。重要的是要导出的值,而不是值的来源。
标签: javascript ecmascript-6 import module export