首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在IIFE的return中声明的函数是这样命名的?

IIFE(Immediately Invoked Function Expression)是一种立即执行的函数表达式。在IIFE的return中声明的函数通常是匿名函数,这样做的目的是为了避免污染全局命名空间,同时可以在函数内部创建一个私有的作用域。

为什么在IIFE的return中声明的函数是匿名的呢?这是因为在IIFE中,我们通常只关心函数的执行结果,而不需要在其他地方引用这个函数。通过将函数声明为匿名函数,可以减少全局命名空间的占用,避免与其他函数或变量产生命名冲突。

匿名函数在IIFE中的命名方式通常是通过将函数赋值给一个变量来实现。这个变量可以是一个有意义的名字,也可以是一个简单的单词或字母,只要不会与其他变量产生冲突即可。在IIFE的return中声明的函数的命名方式可以根据实际需求和个人喜好来决定。

下面是一个示例的IIFE,其中return中声明了一个匿名函数:

代码语言:txt
复制
(function() {
  // 私有作用域
  var privateVariable = '私有变量';

  // 在return中声明的匿名函数
  return function() {
    console.log(privateVariable);
  };
})();

在这个示例中,匿名函数被赋值给了一个变量,但是由于这个变量没有被使用,所以这个函数仍然是匿名的。这样做可以确保私有变量privateVariable只能在IIFE内部访问,而不会被外部的代码所修改或访问。

需要注意的是,IIFE中return的函数并不一定要是匿名函数,如果有需要,在return中也可以声明具名函数。但是为了保持代码的简洁性和可读性,通常建议在IIFE中使用匿名函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JS if 函数声明提升

可以看到, 给a赋值5, 并没有赋值到全局变量a上 解决 先看看MDN里说明 ? 从ES6开始 严格模式下,块里函数作用域为这个块。ES6之前不建议块级函数严格模式下使用....ES6非严格模式下, 块函数声明会出现提升, 所以最好使用函数表达式来定义函数 ---- 走走流程看看到底发生了啥 我们可以先把, function a () {}注释掉, 可以看到报错了, Uncaught...然后, 我们可以打点调试一下 if a=1语句之前, 我们可以看到函数声明已经提升了, 此时if作用域里a为函数 ? 而全局a还是undefined ?...给a=1后, 可以看到, 全局a依然undefined, 而块级作用域里, a值为1 ?...随后运行a=5, 则只是块级作用域里赋值, 不会对全局作用域a值进行修改 ---- 当然, 如果使用函数表达式来声明函数的话, 可以避免 var a if (true) { console.log

3.7K20

Kubernetes架构为什么这样

一文,灵雀云CTO陈恺表示:Kubernetes云计算领域已经成为既定标准,进入主流市场,最新版本主要关注稳定性、可扩展性方面,开发人员变得非常流行。...中间 Scheduler(资源调度器)最核心组件,虽然通常是由多个(通常是3个)实例组成,但是都是单活,也就是说只有一个节点工作,其他节点都处于 Standby 状态。为什么这样呢?...如果按照互联网应用架构,看起来应该是这样: ?...但是很显然,这个电商系统可以设计成横向扩展架构为什么呢?这个电商系统和集群调度系统区别到底什么地方?...订单系统匹配需求时候,实际上应该是这样运行订单请求来了之后,根据订单请求购买商品来排队,购买同一个商品请求被放在一个队列里面,然后订单调度系统开始从队列里面依次处理请求,每次做订单匹配时候

72950

Kubernetes架构为什么这样

假设要运行一个多实例Nginx,Kubernetes内部,整个流程这样: 1.通过kubectl命令行,创建一个包含NginxDeployment对象,kubectl会调用 API Server...中间 Scheduler(资源调度器)最核心组件,虽然通常是由多个(通常是3个)实例组成,但是都是单活,也就是说只有一个节点工作,其他节点都处于 Standby 状态。为什么这样呢?...如果按照互联网应用架构,看起来应该是这样: ?...但是很显然,这个电商系统可以设计成横向扩展架构为什么呢?这个电商系统和集群调度系统区别到底什么地方?...订单系统匹配需求时候,实际上应该是这样运行订单请求来了之后,根据订单请求购买商品来排队,购买同一个商品请求被放在一个队列里面,然后订单调度系统开始从队列里面依次处理请求,每次做订单匹配时候

84640

javascript事件监听传递匿名函数(嵌套定义命名函数)与命名函数区别

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。...https://blog.csdn.net/wkyseo/article/details/51352229 项目中有个需求,事件第一次执行(立即执行)与后几次执行不同,但是直接传递定义好命名函数...(window); 这段代码第一次打印1,之后点击打印2 此处需要理解概念:对象引用类型和函数闭包 解读 对象按照引用传递。...第一个fn指向匿名函数(对象),然后添加事件指向匿名函数(对象),你改写fn并不会改写该匿名函数(对象);第二个事件匿名函数,里面调用fn指向函数(形成闭包,取最后赋值fn)。...Object{c:3},因为a, c指向同一对象,引用传递不是复制,这个例子b就好比fn 后记 项目中刚开始想实现此功能时候用第一种方法,但是未能实现,经同事指点,需要嵌套一个匿名函数,形成闭包

1.1K40

Vue 组件 data 为什么必须函数

new Vue() ,data 可以作为一个对象进行操作,然而在 component ,data 只能以函数形式存在,不能直接将对象赋值给它 new Vue({ el: '#app...' }) Vue.comments('todo-item', { data: function(){ return { message: 'Love...' }) 这并非 Vue 自身如此设计,而是跟 JavaScript 特性相关,我们来回顾下 JavaScript 原型链 var Component = function() {}; Component.prototype.data...console.log(component2.data.message); // Peace 以上两个实例都引用同一个对象,当其中一个实例属性改变时,另一个实例属性也随之改变,只有当两个实例拥有自己作用域时...var Component = function() { this.data = this.data() } Component.prototype.data = function(){ return

2.6K20

为什么StringJava不可变

String Java 不可变。 不可变类只是一个无法修改其实例类。 创建实例时,将初始化实例所有信息,并且无法修改信息。 不可变类有许多优点。...本文总结了为什么 String 设计为不可变。 这篇文章从内存,同步和数据结构角度说明了不变性概念。 1. 字符串池 字符串池(String intern pool)方法区域中特殊存储区域。...如果字符串可变,则使用一个引用更改字符串将导致其他引用错误。 2. 缓存哈希码 字符串哈希码经常在 Java 中使用。 例如, HashMap 或 HashSet 。...不可变保证哈希码总是相同这样它就可以缓存起来而不用担心变化。这意味着,每次使用时都不需要计算哈希码。 这更有效率。...字符串不是不可变,连接或文件将被更改,这可能会导致严重安全威胁。 该方法认为它连接到一台机器,但事实并非如此。 可变字符串也可能在 Reflection 引起安全问题,因为参数字符串。

1.3K20

Javascript函数声明函数表达式

; }(); 试一下就知道这段代码意思就是声明一个函数,然后立刻执行,因为Javascript变量作用域基于函数,所以这样可以避免变量污染,但这里位运算符『~』乍一看让人摸不到头脑...阐述为什么之前,让我们先来明确Javascript两个概念:函数声明函数表达式: 先来看看什么样函数声明: function() { alert("hello, world...."); }; function foo() { alert("hello, world."); }; 再来看看什么样函数表达式: var foo =...,Javascript不允许函数声明后面直接使用小括号,而函数表达式则没有这个限制,通过函数声明前面加上一个『~』操作符,就可以让语法解析器把后面看成函数表达式,同样函数声明前面加上『!...,+,-』等操作符也是可行。 那我们为什么不使用下面这种函数表达式方式呢?

53620

Python Return Self 到底个啥?

题目中 return self 并不是我们常见 self 参数,而本文首要任务需要了解什么类型提示以及它们如何工作。类型提示我们可以显式地指明变量类型、函数参数和返回值。...特别像 .enqueue() 这样方法将返回 Queue,即使你 Queue 子类上调用它。 好消息!...静态类型检查器可以识别 Self,你也可以导入这个符号,这样运行代码就不会导致名称错误。 接下来章节,我们将探索 Self 类型替代方法并查看它们实现。...类型变量通常用于通用类型,例如特定对象列表,如list[str]和list[BankAccount]。 TypeVar 允许你声明泛型类型和函数定义参数,这使它成为注释返回类实例方法有效候选。...要在这种情况下使用 TypeVar,我们可以从 Python 类型模块中导入它,并在构造函数给我们类型命名: # stack.py from typing import TypeVar TStack

14211

js函数声明你真的会了吗???

答案:undefined 30 报错:b is not defined 解析:1、没有用var声明全局变量,即便在函数内部; 2、只有function内部新声明才是局部变量,if,while,...for等声明变量其实是全局变量(除非本身在function内部) 3、因为变量提升,虽然if块内容没执行,但是预解析阶段会执行var a,只是没有赋值而已,因此打印aundefined而打印b会报错...在任何时代, 教育说起来都是一件高大上事, 但却没有什么真正有价值东西教得会, 没有任何一种文化模因 可以说清楚一个个体全部问题。...在任何时代, 一秒钟内看到本质的人, 和花半辈子看不清的人, 自然不一样命运。 每一天,你将受到才哥理论,结合历史、政治、文化、艺术、商业故事,令人防不胜防高纯度无死角知识轰炸。...以及,不间断私藏书籍、电影推荐。 有时候,某件事虽记不清楚,但总感觉这样很久很久以前发生过...

1.6K20

这样 C# 使用 LongRunnigTask

用来从队列取数据,然后处理数据,或者一些定时任务。你任务需要占用大量 CPU 资源,一个很大循环,比如要遍历一个很大数组,并做一些处理。...也就是说,我们任务 3 秒后就已经执行完了,而不是我们想要长时间运行。究其原因,是因为我们采用了异步方式来执行任务。而异步任务执行,通过 ThreadPool 来执行。...执行。...实际上还有很多考量要考量 TaskScheduler 实现本文采用 aspnetcore 实现,但是在其他实现,可能会有不同实现。...LongRunning 也不是就不能用异步正如开篇提到第二种场景,如果你业务第一个 await 之前有大量同步代码,那么此时单独开启一个线程,也是有意义

66240

项目中这样配置Vue

启用压缩,让页面加载更快 我们开发时候,为了方便调试,我们需要使用源码进行调试,但在生产环境,我们追求更多加载更快,体验更好,这时候我们会将代码空格注释去掉,对待吗进行混淆压缩,只为了让js...但只是这样不够,我们还可以做得更极致。...团队开发,配置这些还是很有用,制约团队每个人都按照标准来开发功能,这样至少大家写代码不至于相互看不懂(我深受不规范代码折磨啊)。...git提交代码时候,会触发一系列hook钩子函数,而husky就是一个Git hooks工具。...lint-staged一个git暂存文件上运行linters工具,为什么要用这个工具呢,因为我们提交代码时候,只需要对已经修改过文件进行校验,不然检查所有文件,比较浪费时间。

85530

这样 C# 使用 LongRunningTask

用来从队列取数据,然后处理数据,或者一些定时任务。 你任务需要占用大量 CPU 资源,一个很大循环,比如要遍历一个很大数组,并做一些处理。...也就是说,我们任务 3 秒后就已经执行完了,而不是我们想要长时间运行。 究其原因,是因为我们采用了异步方式来执行任务。而异步任务执行,通过 ThreadPool 来执行。...执行。...实际上还有很多考量 要考量 TaskScheduler 实现 本文采用 aspnetcore 实现,但是在其他实现,可能会有不同实现。...LongRunning 也不是就不能用异步 正如开篇提到第二种场景,如果你业务第一个 await 之前有大量同步代码,那么此时单独开启一个线程,也是有意义

25310

js构造函数和普通函数区别_函数声明函数定义

大家好,又见面了,我你们朋友全栈君。 1、构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写 2、构造函数和普通函数区别在于:调用方式不一样。...普通函数调用方式:直接调用 person(); b.构造函数调用方式:需要使用new关键字来调用 new Person(); 4、构造函数函数名与类名相同:Person( ) 这个构造函数...A、立刻在堆内存创建一个新对象 B、将新建对象设置为函数this C、逐个执行函数代码 D、将新建对象作为返回值 6、普通函数例子...:因为没有返回值,所以为undefined 7、构造函数例子:构造函数会马上创建一个新对象,并将该新对象作为返回值返回 8、用instanceof 可以检查一个对象是否一个类实例...,则返回true; 所有对象都是Object对象后代,所以任何对象和Object做instanceof都会返回true 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

3.1K10

JDK 栈竟然这样实现

前面的文章《动图演示:手撸堆栈两种实现方法!》我们用数组和链表来实现了自定义栈结构,那 JDK 官方如何实现栈呢?接下来我们一起来看。...JDK 栈实现 聊会正题,接下来我们来看 JDK 如何实现栈 JDK ,栈实现类 Stack,它继承关系如下图所示: ? Stack 包含方法如下图所示: ?...() { return size() == 0; } // 忽略其他方法... } 从上述源码可以看出, Stack 核心方法中都调用了父类 Vector 类方法...函数调用栈 栈程序中最经典一个应用就是函数调用栈了(或叫方法调用栈),比如操作系统给每个线程分配了一块独立内存空间,这块内存被组织成“栈”这种结构, 用来存储函数调用时临时变量。...为了让你清晰地看到这个过程对应函数栈里出栈、入栈操作,我画了一张图。图中显示执行到 add() 函数时,函数调用栈情况。 ?

42210
领券