首页 > 解决方案 > 返回函数的函数 - ?

问题描述

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

访问器函数接受一个对象并返回一个函数。
返回的函数可以访问给定对象的属性和值。

我不明白的部分是返回的函数如何访问对象的属性和值而不在全局范围内定义?

对不起,如果问题不清楚。我想知道为什么返回的函数能够在不使用 for 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]

标签: javascriptfunctionhigher-order-functions

解决方案


这是由于关闭而发生的。javascript 中的所有函数都形成闭包。你可以从这里阅读更多关于它的信息


推荐阅读