在lodash中为什么谓词和结果变量没有以var关键字作为前缀?

时间:2016-05-10 02:07:28

标签: javascript arrays global-variables lodash flatten

这是lodash中"main": "./src/largestHref.js"的副本,这个函数将传递一个多维数组并返回一个已被展平的新数组。这个flattenDeep()是递归处理的。

阅读源代码我注意到:

flattenDeep()predicate不使用var吗?

results

问题:为什么lodash使用全局变量作为谓词和结果?这背后有理由/理论吗?

Full src

剥离出js:

      predicate || (predicate = isFlattenable);
      result || (result = []);

1 个答案:

答案 0 :(得分:1)

它们不是全局的,声明传递给函数的任何参数 - 这是var所做的。

所以在这部分功能中:

function baseFlatten(array, depth, predicate, isStrict, result) {
  var index = -1,

所有传入的参数基本上已经在它们前面有一个var, 并注意index确实有一个var,以免变为全球。

查看这个快速的JSBin并查看它通知您的错误...

https://jsbin.com/kebekib/3/edit?js,console