javascript - 在 javascript 中使用 () 作为函数

标签 javascript scope closures

抱歉,如果这是一个菜鸟问题,但我仍然无法理解其用法的区别,因此我无法使用正确的关键字在 google 上进行搜索。

我正在关注 this 闭包教程。

现在我的查询是针对这段代码 -

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

var myFunc = makeFunc();
myFunc();

为什么作为函数的 displayName 在代码中被引用为属性?作为一个闭包函数,当我尝试这段代码时,它需要作为一个属性返回 -

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

var myFunc = makeFunc();
myFunc();

输出 - 警告但错误 TypeError: myFunc is not a function

让我知道什么时候使用什么或我在这里缺少什么基本概念。

最佳答案

“返回显示名称;”正在返回函数 displayName。
然后将结果设置为 myFunc。

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

var myFunc = makeFunc();
myFunc();

如果你想到:
会更容易理解: 函数显示名称(){}
作为替代: 显示名称 = 函数(){}

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

var myFunc = makeFunc();
myFunc();

关于javascript - 在 javascript 中使用 () 作为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26174053/

相关文章:

javascript - var counter = array.length, temp, index 是什么意思?

javascript - AngularJS - 如何通过 Handlebars 三元运算添加 HTML 元素?

python - 在 Python 中将类实现为字典

javascript - Jquery/Javascript $.get 的变量范围问题

javascript - 从第一个对象创建的另一个对象中访问对象原型(prototype)的变量

javascript - 如何避免幻灯片结束事件中的 JavaScript 关闭

javascript - JavaScript 中反引号 (`) 的使用

javascript - 从 Angular2 访问 HTML5 本地存储

c - 没有括号的 for 循环的绝对范围是什么?

javascript - 使用从 Firebase 获取 Javascript 返回的数据