关于以下模拟代码(_与lodash库有关):
var containerFunction = function () { var opts = {data: value}; _.map(lines, functionForEach); } var functionForEach = function (line) { Do something for each line passed in from the maps function. Need to access opts in this scope. return value; }
参数行是从map函数接收的,但是将opts参数传递给functionForEach函数同时保持粗略模式(如果可能)的最佳方法是什么.
我想的是:
_.map(lines, functionForEach(opts))
或类似的东西可能有效,但显然不是.
有什么建议?
你有三种选择:
放在functionForEach
里面containerFunction
.如果你不打算在functionForEach
其他地方使用,这是最有意义的.
把它写成:
var containerFunction = function () { var opts = {data: value}; _.map(lines, function(elt) { return functionForEach(elt, opts); }); } var functionForEach = function (line, opts) { Do something for each line passed in from the maps function. Need to access opts in this scope. return value; }
如果必须,请传递opts
第三个(thisArg
)参数_.map
并使用this
inside 访问它functionForEachvar
.