javascript - 关于 Javascript 中的匿名函数

标签 javascript

我是 Javascript 的新手,但对真正的 OO 语言有很深的背景,比如 C#、Java、C++... 在 Javascript 中有一个概念叫做匿名函数。这是一个示例代码:

(   function() { 
      for(var x = 0;x<5;x++) {
         console.log(x); 
      } 
   })(); 

据我所知,末尾的括号使函数调用自身。 还有另一种语法做同样的事情:

var x =   function() { 
      for(var x = 0;x<5;x++) {
         console.log(x); 
      } 
   }(); 

但现在如果我尝试使用 x,它不会再次执行该函数。那么,如果在第二个版本中使用赋值,目标是什么?我可以再次通过 x 使用该功能吗?

最佳答案

自执行函数被称为 IIFE(立即调用函数表达式),它通常用于控制作用域,这样您就不会得到很多全局变量。

比如这个函数相当于一个moneybox,它封装了你的“钱”的所有信息,所以你只能插入钱或者得到总的钱,而不能直接调用add/get访问变量。

它也可以用作 OOP 的一种形式,因为您已经非常熟悉它

var myMoneyBox = (function() {
    var money = 0;

    function addMoney(x) {
        if (x > 0)
            money += x;
    }

    function getMoney() {
        return money;
    }

    return {
        add: addMoney,
        get: getMoney
    }
})();

myMoneyBox.add(10);
console.log(myMoneyBox.get());

关于javascript - 关于 Javascript 中的匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47132098/

相关文章:

javascript - d3.js 直方图不显示列

javascript - 使用 Facebook Javascript API 发送消息

javascript - Algolia 搜索结果覆盖了 css 格式

javascript - Uncaught Error : Cannot read property 'top' of null

javascript - 更新 D3 条形图时出现 svg 元素缩放宽度问题

javascript - 获取字符串Jquery中标签中包含的字符串

javascript - FastClick 和 click() 事件触发麻烦

javascript - Angular 6 错误处理不显示 toast

javascript - 在第一列 DataTables 中禁用行选择

javascript - 如何确定下拉菜单应显示向上还是向下方向