这是lodash中"main": "./src/largestHref.js"
的副本,这个函数将传递一个多维数组并返回一个已被展平的新数组。这个flattenDeep()
是递归处理的。
阅读源代码我注意到:
flattenDeep()
和predicate
不使用var吗?
results
问题:为什么lodash使用全局变量作为谓词和结果?这背后有理由/理论吗?
剥离出js:
predicate || (predicate = isFlattenable);
result || (result = []);
答案 0 :(得分:1)
它们不是全局的,声明传递给函数的任何参数 - 这是var
所做的。
所以在这部分功能中:
function baseFlatten(array, depth, predicate, isStrict, result) {
var index = -1,
所有传入的参数基本上已经在它们前面有一个var
,
并注意index
确实有一个var
,以免变为全球。
查看这个快速的JSBin并查看它通知您的错误...