JavaScript的匿名函数与立即调用的函数表达式

立即调用的函数表达式(Immediately Invoked Function Expression,IIFE)是一种在 JavaScript 中定义并立即执行的函数。

它通常用于创建一个独立的作用域,以避免变量污染全局作用域。

这种模式可以帮助管理作用域,尤其是在使用闭包时。

语法

IIFE 的基本语法如下:

(function() {
    // 这里是函数体
})();

或者使用箭头函数:

(() => {
    // 这里是函数体
})();

特点

  1. 立即执行:定义后立即执行,不需要单独调用。
  2. 私有作用域:在 IIFE 内部定义的变量不会暴露到外部作用域,减少了全局变量的数量。
  3. 封装逻辑:可以将相关的逻辑和变量封装在一个私有作用域中,避免与其他代码冲突。

示例

以下是一个简单的 IIFE 示例:

var result = (function() {
    var count = 0; // 私有变量
    return function() {
        count++;
        return count;
    };
})();

console.log(result()); // 输出: 1
console.log(result()); // 输出: 2
console.log(result()); // 输出: 3

在这个例子中:

  • count 是一个私有变量,只能通过返回的函数访问。
  • 每次调用 result() 都会增加 count 的值,而 count 对外部代码不可见。

用途

  • 避免全局污染:通过将代码封装在 IIFE 中,避免全局命名冲突。
  • 模块化代码:可以用来创建模块,封装相关功能。
  • 初始化设置:在应用程序开始时执行一些初始化逻辑。

总之,IIFE 是一个非常有用的工具,尤其是在需要控制作用域和封装逻辑的场景中。

实例

在悬浮日志区域显示一个时钟,时钟每秒都会刷新
例子中的count,就是一个递增的秒数。每次调用这个匿名函数,秒数都会增加,而不是清零。

var 计时函数 = function () {
    var count = 0
    return function () {
        window.runOnUiThread(function fun() {
            clock.text(s_to_hs(count) + '')
        })
        return count++;
    }
}()

setInterval(计时函数, 1000)

file

1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520飞云脚本圈
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » JavaScript的匿名函数与立即调用的函数表达式

企业级大数据智能营销管理系统

了解详情