【发布时间】:2019-02-26 14:22:48
【问题描述】:
我正在使用 Webpack 模块来保持项目中的事物井井有条,但是非常烦人的是必须明确指定模块可能需要的所有变量,而不是让它在调用函数的范围内搜索它们。有更好的方法吗?示例:
main.js
import {logMonth} from "./helpers";
document.addEventListener("DOMContentLoaded", () => {
let month = "September";
logMonth();
});
helpers.js
let logMonth = () => {
console.log(month)
}
这将产生错误,因为logMonth() 无权访问month 变量。
这是一个极其简化的示例,但是对于需要许多变量的函数,传递函数可能需要的所有必需参数会变得非常难看。
我的问题是:有没有办法让模块可以访问调用范围的变量而不是显式传递它们?
【问题讨论】:
-
如何将
month作为函数的参数:logMonth(month)? -
这就是我目前在这种情况下所做的。然而,想象一下当函数需要几个已经在父作用域中定义的参数时,我将不得不调用
function(arg1,arg2,arg3,arg4),除了冗长之外,感觉没有必要,因为变量已经存在。 -
一旦您有超过 3 个参数,请使用一个对象,这样您就不必更改任何先前编写的对该函数的调用。因此,如果您事先知道一个函数将包含更多参数,请立即从一个对象作为其唯一参数开始,然后根据需要添加额外的参数。
标签: javascript webpack ecmascript-6 module