函数返回函数-?

时间:2018-10-17 06:41:30

标签: javascript function higher-order-functions

我刚刚开始学习JavaScript并进行一些编码练习。抱歉,这可能是一个愚蠢的问题。我很难理解返回函数的以下函数的答案。

访问器函数获取一个对象并返回一个函数。
返回的功能可以访问给定对象的属性和值。

我不了解的部分是返回的函数如何在不定义全局范围的情况下访问对象的属性和值?

对不起,如果问题不清楚。我想知道为什么返回的函数无需使用in ..循环就能访问属性和值。

我一直在寻找有关此的文章/博客文章,但是却找不到任何东西。如果您能澄清,我将不胜感激!

const accessor = obj => {
  return (prop, value) => {
    if (value === undefined) {
      return obj[prop];
    } else {
      obj[prop] = value;
    }
  };
};

accessExample = accessor({ foobar: [7, 8, 9] });
accessExample('foobar');

//returns [7, 8, 9]

2 个答案:

答案 0 :(得分:1)

这是由于关闭而发生的。 javascript形式闭包中的所有函数。您可以从这里Closures

了解更多信息

答案 1 :(得分:0)

函数实际上是在JS中创建作用域。可以在嵌套函数中访问任何变量。 Learn You a Haskell for Great Good