【问题标题】:How is possible to return a function as a property?如何将函数作为属性返回?
【发布时间】:2020-03-26 22:24:51
【问题描述】:

function makeFunc() {
  var name = 'Mozilla';
  function displayName() {
    alert(name);
  }
  return displayName;
}

var myFunc = makeFunc();
myFunc();

在以下示例中,此内部函数返回为属性return displayName;

【问题讨论】:

  • 请描述问题所在。
  • 这种语法让我无法弄清楚它是变量还是方法。我希望有人向我解释为什么我们在没有括号的情况下退回了它。
  • displayName 是一个变量(myFunc 也是),something.displayName 是一个方法。

标签: javascript closures


【解决方案1】:

它不是一个属性。它是存储在变量中的值。读取变量并返回值。

函数是 JavaScript 中的一等对象。你可以用它们做任何你可以用任何其他类型的对象做的事情(因此你可以用任何其他类型的值做任何事情)。

【讨论】:

  • 我是 javascript 新手。我不明白你,但这个变量在哪里?有一个名为 name 的属性和一个名为 displayName 的函数,因此没有赋值。 @昆汀
  • 函数声明在它们出现的范围内创建一个同名的变量。变量名是displayName
  • 这是否意味着如果在全局范围内创建函数,我可以用相同的名称调用它而不带括号?
  • 不,因为在评估函数的事物后面加上括号是如何调用函数。
  • 所以你的意思是在调用时我必须使用括号,但在返回时我可以使用函数的名称。对!!
【解决方案2】:

语句var myFunc = makeFunc(); 将执行方法makeFunc 并将其分配给变量myFunc。 makeFunc 方法返回另一个方法,因此将一个函数分配给 myFunc 变量。此函数在您的下一条语句myFunc(); 中执行并警告“Mozilla”。

【讨论】:

    猜你喜欢
    • 2017-06-06
    • 2013-11-09
    • 2011-08-31
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    相关资源
    最近更新 更多