前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >理解JavaScript立即执行函数

理解JavaScript立即执行函数

原创
作者头像
伯爵
修改于 2019-10-11 02:56:08
修改于 2019-10-11 02:56:08
1.1K0
举报
文章被收录于专栏:前端小菜鸟前端小菜鸟

IIFE (Immediately Invokable Function Expressions):是在函数声明后立即调用的函数表达式。

立即执行函数通常包含两种使用格式,具体使用那一种风格可以根据个人习惯和团队规范选择:

代码语言:txt
AI代码解释
复制
// 第一种:
(function() {/* */})();

// 第二种:
(function(){/* */}())

// 也可以使用箭头函数声明
;(() => {/* */}())

数学符号都会导致函数立即执行,因为JavaScript引擎会将函数判断为表达式,而不是函数声明。

代码语言:txt
AI代码解释
复制
!function(){}();
+function(){}();
-function(){}();
~function(){}();

new关键字也会导致函数被立即执行。

代码语言:txt
AI代码解释
复制
new function(){ /* code */ }
new function(){ /* code */ }() 

IIFE的进阶使用是把它们作为函数调用进行传参调用:

代码语言:txt
AI代码解释
复制
var val = "global";
(function(global){
    var val = 'function';
    console.log(val) //function
    console.log(global.val) //global
}(window))

console.log(val)  //global

IIFE函数的作用:

  • 避免污染全局 在JavaScript函数内部,会形成一个块级作用域的概念,可以利用IIFE函数避免全局污染,比如JQuery插件的封装模式:(function($){ ``` //JQuery插件 })(jQuery);
  • 倒置代码的运行顺序

这是一个《你不知道的JavaScipt》上的一个经典的例子, 在UMD(Universal Module Definition)项目被广泛使用:

代码语言:txt
AI代码解释
复制
var val = 'global';
(function(fun){
    fun(window);
})(function def(global) {
    var val = 'function';
    console.log(val); //function
    console.log(global.val); // global
})
  • 模块模式

IIFE函数可以创建单例对象,我们成为模块模式。

代码语言:txt
AI代码解释
复制
var count = (function() {
    var initVal = 0;
    var number = initVal;
    return {
        init: function() {
            number = initVal; 
        },
        get: function() {
            return number;
        },
        set: function(val) {
            number = val;
        },
        add: function() {
            return ++number;
        }
    }
}());

console.log(count.get()); //0
count.set(10);
console.log(count.add());//11
count.init();
console.log(count.add());// 1
参考

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
KubeSphere 最佳实战:探索 Kubernetes 持久化存储之 Longhorn 初窥门径
为了丰富我们的技术栈,并为未来的容器云平台设计持久化存储提供更多灵活性和选择性。今天,我将跟大家一起探索,如何将 Longhorn 集成至 KubeSphere 管理的 Kubernetes 集群。
运维有术
2024/07/17
2381
KubeSphere 最佳实战:探索 Kubernetes 持久化存储之 Longhorn 初窥门径
KubeSphere 最佳实战:59 张高清大图,带你实战入门 KubeSphere DevOps
KubeSphere 基于 Jenkins 的 DevOps 系统是专为 Kubernetes 中的 CI/CD 工作流设计的,它提供了一站式的解决方案,帮助开发和运维团队用非常简单的方式构建、测试和发布应用到 Kubernetes。它还具有插件管理、Binary-to-Image (B2I)、Source-to-Image (S2I)、代码依赖缓存、代码质量分析、流水线日志等功能。
运维有术
2024/08/14
3600
KubeSphere 最佳实战:59 张高清大图,带你实战入门 KubeSphere DevOps
KubeSphere 最佳实战:征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
近期,KubeSphere 社区的讨论中频繁出现关于 Docker 官方镜像仓库访问受限的问题。 尽管用户尝试通过设置 KKZONE=cn 来解决,但部署 KubeSphere 时仍面临失败的情况。
运维有术
2024/07/29
8000
KubeSphere 最佳实战:征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
KubeSphere 最佳实战:KubeKey 扩容 Kubernetes Worker 节点实战指南
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 KubeKey 扩容 Kubernetes Worker 节点实战指南。
运维有术
2024/07/16
3521
KubeSphere 最佳实战:KubeKey 扩容 Kubernetes Worker 节点实战指南
KubeSphere 最佳实战:征服 Docker 镜像访问限制:KubeSphere v3.4.1 成功部署全攻略
近期,KubeSphere 群里讨论中频繁出现关于 Docker 官方镜像仓库访问受限的问题。 尽管用户尝试通过设置 KKZONE=cn 来解决,但部署 KubeSphere 时仍面临失败的情况。
运维有术
2024/07/18
3790
KubeSphere 最佳实战:征服 Docker 镜像访问限制:KubeSphere v3.4.1 成功部署全攻略
KubeSphere 最佳实战:一文搞定 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 一文搞定 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8。
运维有术
2024/06/12
4920
KubeSphere 最佳实战:一文搞定 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8
KubeSphere 最佳实战:14 张高清大图带你抢先体验 KubeSphere v4.1.1, AIO 部署全攻略
2024年 9月 9号,备受广大网友期待的 KubeSphere v4 终于在GitHub 代码仓库发布了正式的代码,而且是直接越过了 v4.0 直接发布的 v4.1.1。
运维有术
2024/09/14
4140
KubeSphere 最佳实战:14 张高清大图带你抢先体验 KubeSphere v4.1.1, AIO 部署全攻略
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
今天分享的主题是:如何在离线环境部署 Kubernetes v1.30.6 和 KubeSphere v4.1.2 高可用集群。
运维有术
2025/01/22
7291
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
KubeSphere 最佳实战:一文搞定 KubeKey v3.1.1 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.28
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 一文搞定 KubeKey v3.1.1 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.28。
运维有术
2024/05/21
9141
KubeSphere 最佳实战:一文搞定 KubeKey v3.1.1 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.28
KubeSphere 最佳实战:KubeKey v3.1.1 部署 KubeSphere v3.4.1 和 Kubernetes v1.28 实战指南
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 KubeKey v3.1.1 部署 KubeSphere v3.4.1 和 Kubernetes v1.28 实战指南。
运维有术
2024/05/22
3700
KubeSphere 最佳实战:KubeKey v3.1.1 部署 KubeSphere v3.4.1 和 Kubernetes v1.28 实战指南
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
备受瞩目的 KubeSphere v4.1.2 已经正式官宣发布,该版本带来了一个重大优化:增加默认的扩展组件仓库。
运维有术
2024/11/12
6190
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
KubeSphere 最佳实战:KubeKey 部署 Kubernetes v1.28.8 实战
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 KubeKey 部署 Kubernetes v1.28.8 实战。
运维有术
2024/04/25
6310
KubeSphere 最佳实战:KubeKey 部署 Kubernetes v1.28.8 实战
KubeSphere 最佳实战:探索 Kubernetes 持久化存储之 Rook Ceph 初窥门径
在 Kubernetes 生态系统中,持久化存储是支撑业务应用稳定运行的基石,对于维护整个系统的健壮性至关重要。对于选择自主搭建 Kubernetes 集群的运维架构师来说,挑选合适的后端持久化存储解决方案是关键的选型决策。目前,Ceph、GlusterFS、NFS、Longhorn 和 openEBS 等解决方案已在业界得到广泛应用。
运维有术
2024/08/07
3430
KubeSphere 最佳实战:探索 Kubernetes 持久化存储之 Rook Ceph 初窥门径
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。
运维有术
2024/07/29
4000
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
KubeSphere 最佳实战:KubeKey 助力 Kubernetes 扩容控制节点实战指南
在近期的技术分享中,我们实战讨论了Kubernetes 集群 Worker 节点的扩容。文章发布后,我收到了社区成员的反馈,询问控制节点的扩容是否可行。我的回答是:绝对可以。
运维有术
2024/07/20
1480
KubeSphere 最佳实战:KubeKey 助力 Kubernetes 扩容控制节点实战指南
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南
本文介绍了如何在 openEuler 22.03 LTS SP2 aarch64 架构服务器上部署 KubeSphere 和 Kubernetes 集群。我们将使用 KubeSphere 开发的 KubeKey 工具实现自动化部署,在三台服务器上实现高可用模式最小化部署 Kubernetes 集群和 KubeSphere。
运维有术
2023/10/18
7790
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南
KubeSphere 最佳实战:openEuler 22.03 LTS SP3 安装 NVIDIA 显卡驱动
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 openEuler 22.03 LTS SP3 安装 NVIDIA 显卡驱动。
运维有术
2024/05/23
6130
KubeSphere 最佳实战:openEuler 22.03 LTS SP3 安装 NVIDIA 显卡驱动
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。
运维有术
2024/07/19
4510
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
KubeSphere 最佳实战:KubeKey 助力 Kubernetes 扩容控制节点实战指南
在近期的技术分享中,我们实战讨论了Kubernetes 集群 Worker 节点的扩容。文章发布后,我收到了社区成员的反馈,询问控制节点的扩容是否可行。我的回答是:绝对可以。
运维有术
2024/07/29
2020
KubeSphere 最佳实战:KubeKey 助力 Kubernetes 扩容控制节点实战指南
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
备受瞩目的 KubeSphere v4.1.2 已经正式官宣发布,该版本带来了一个重大优化:增加默认的扩展组件仓库。
运维有术
2024/11/11
1720
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
推荐阅读
KubeSphere 最佳实战:探索 Kubernetes 持久化存储之 Longhorn 初窥门径
2381
KubeSphere 最佳实战:59 张高清大图,带你实战入门 KubeSphere DevOps
3600
KubeSphere 最佳实战:征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
8000
KubeSphere 最佳实战:KubeKey 扩容 Kubernetes Worker 节点实战指南
3521
KubeSphere 最佳实战:征服 Docker 镜像访问限制:KubeSphere v3.4.1 成功部署全攻略
3790
KubeSphere 最佳实战:一文搞定 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8
4920
KubeSphere 最佳实战:14 张高清大图带你抢先体验 KubeSphere v4.1.1, AIO 部署全攻略
4140
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
7291
KubeSphere 最佳实战:一文搞定 KubeKey v3.1.1 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.28
9141
KubeSphere 最佳实战:KubeKey v3.1.1 部署 KubeSphere v3.4.1 和 Kubernetes v1.28 实战指南
3700
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
6190
KubeSphere 最佳实战:KubeKey 部署 Kubernetes v1.28.8 实战
6310
KubeSphere 最佳实战:探索 Kubernetes 持久化存储之 Rook Ceph 初窥门径
3430
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
4000
KubeSphere 最佳实战:KubeKey 助力 Kubernetes 扩容控制节点实战指南
1480
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南
7790
KubeSphere 最佳实战:openEuler 22.03 LTS SP3 安装 NVIDIA 显卡驱动
6130
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
4510
KubeSphere 最佳实战:KubeKey 助力 Kubernetes 扩容控制节点实战指南
2020
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
1720
相关推荐
KubeSphere 最佳实战:探索 Kubernetes 持久化存储之 Longhorn 初窥门径
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档