Javascript 立即执行函数
IIFE,一般称为立即执行函数。你可能会问我,*“嘿!我知道正常的函数表达式是什么样子的,但是 IIFE 到底是什么?”。*好吧,这正是我今天要在本文中回答的问题。
函数表达式
在了解立即调用函数表达式之前,让我们快速回顾一下 JavaScript 中的普通函数表达式是什么样的。
function(){return ;
}
这就是我们通常在 JavaScript 中编写函数的方式。function
关键字,然后是函数名称,然后是函数体。
在ES6之后,我们还可以编写箭头函数,以及将箭头函数赋值给变量。
ArrowFn(()=>{})
let ArrowFn=()=>{
}
通过上面的小例子,快速回顾了普通函数以及箭头函数的编写方式。下面我们介绍立即执行函数
重要的部分来了,为了调用上面的方法我们会怎么调用?你需要在任何你想要的地方显式地调用它。事实上,这就是我们首先编写普通函数表达式的主要原因。
ArrowFn()
立即执行函数
现在,我们了解了普通函数表达式在 JavaScript 中是如何工作的,让我们慢慢转向 IIFE。让我们尝试理解短语Immediately Invoked Functional Expressions。它的意思是:
立即调用:立即调用的东西。
函数表达式:到目前为止,我们已经研究过它们!
如果我们了解整个情况:
IIFE(立即调用函数表达式)是一个 JavaScript 函数,它在定义后立即运行。-MDN
所以,我们不需要显式调用这个函数来调用/运行它。它会在调用 JavaScript 文件后立即运行。IIFE 看起来像这样:
(function(){这里是函数体
})()
如果我们看语法本身,我们有两对闭括号,第一对包含要执行的逻辑,第二个通常是我们调用函数时包含的内容,第二个括号负责告诉编译器函数表达式必须立即执行。
以下是将普通函数转换为 IIFE 的方法
function consoleName(){console.log('hello 哈哈哈')
}
consoleName()(function(){console.log('hello 哈哈哈')})()
请注意,我们不需要对 IIFE 的显式调用。此外,这些只是匿名函数,因为它们不需要函数名。如果你愿意,你也可以给它命名。它们甚至也可以是箭头函数!
当然了,立即执行也接受参数,下面是一个小栗子:
function consoleName(name){console.log('hello '+ name)
}
consoleName('哈哈哈')(function(name){console.log('hello '+name)})("哈哈哈")
IIFE 的特征/行为
-
IIFE 像 JavaScript 中的任何其他函数/变量一样遵循自己的范围。立即调用的名称部分有时会使新开发人员感到困惑,因为他们希望 IIFE 执行而与函数范围无关,这是错误的。例如,让我们看下面的示例,其中 IIFE 是在函数中定义的,并且只有在我们调用父函数时才会立即调用。
function fn(){console.log("A");(()=>{console.log("B")})()console.log("C") }
输出结果是A B C
-
与其他函数类似,IIFE 也可以命名或匿名,但即使 IIFE 确实有名称,也不可能引用/调用它。
-
IIFE 有自己的范围,即您在函数表达式中声明的变量在函数之外将不可用。
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/f4c2b5099fb61d5e95d7a4afeb207ee5.png)
Javascript 立即执行函数
IIFE,一般称为立即执行函数。你可能会问我,*“嘿!我知道正常的函数表达式是什么样子的,但是 IIFE 到底是什么?”。*好吧,这正是我今天要在本文中回答的问题。 函数表达式 在了解立即调用函数表达式之前,让…...
![](https://img-blog.csdnimg.cn/img_convert/21181ec7bff94d2b8dd3a512e91adaf5.png)
基于Django和vue的微博用户情感分析系统
完整代码:https://download.csdn.net/download/weixin_55771290/87471350概述这里简单说明一下项目下下来直接跑起的方法。前提先搞好python环境和vue环境,保证你有一个账户密码连上数据库mysql。1、pip install requirements.txt 安装python包2、修改mysql数据库的…...
![](https://img-blog.csdnimg.cn/74b26d4ff2734ada97cf3ed04dfb911a.png)
【C++】IO流
🌈欢迎来到C专栏~~IO流 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句鸡汤…...
![](https://img-community.csdnimg.cn/avatar/fcc8fa9f87404652beb9e08a0ac9652d.png?x-oss-process=image/resize,m_fixed,h_88,w_88)
【论文速递】ACL 2021-CLEVE: 事件抽取的对比预训练
【论文速递】ACL 2021-CLEVE: 事件抽取的对比预训练 【论文原文】:CLEVE: Contrastive Pre-training for Event Extraction 【作者信息】:Wang, Ziqi and Wang, Xiaozhi and Han, Xu and Lin, Yankai and Hou, Lei and Liu, Zhiyuan and Li, Peng and …...
![](https://img-blog.csdnimg.cn/aac15518b0de432fa31f67eb00e926aa.jpeg#pic_center)
《自动驾驶规划入门》专栏结语
一、 源起 2021年10月12日,化学工业出版社的金编辑根据博客中留下的微信号联系上我,问我有没有出书的想法。从小到大,书与文字在我心里是有着神圣地位的。我在“想试试”与“害怕做不好”这两种矛盾的心情中,还是先应了下来。签了…...
![](https://img-blog.csdnimg.cn/c3ce1a23bb714548802ea75ca74681fe.png)
【数据结构与算法】2.八大经典排序
文章目录简介1.分析排序算法2.插入排序2.1.直接插入排序2.2.希尔排序3.选择排序3.1.直接选择排序3.2.堆排序3.2.1.堆的数据结构3.2.2.算法实现4.交换排序4.1.冒泡排序4.2.快速排序5.归并排序6.基数排序7.八大排序算法总结简介 排序对于任何一个程序员来说,可能都不会…...
![](https://img-blog.csdnimg.cn/710c49fe4b2d435b9701e5bf9c7dfc1d.png)
Windows 免安装版mysql,快速配置教程
简单步骤 下载并解压mysql压缩包,把 “<mysql根目录>/bin” 路径添加到系统环境变量path中命令行执行 mysqld --initialize --console,初始化data目录(数据库表文件默认存放在" <mysql安装根目录>/data "目录下&#…...
![](https://img-blog.csdnimg.cn/img_convert/1dbee500d915d0230d88d74a8f2e015f.gif)
空间误差分析:统一的应用导向处理(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...
![](https://img-blog.csdnimg.cn/a48ef8609a1f43e9aeb692e24ef83ab0.png#pic_center)
【C++】引用、内联函数、auto关键字、范围for、nullptr
引用什么叫引用引用的特性常引用使用场景传值、传引用效率比较引用和指针的区别内联函数auto关键字(C11)基于范围的for循环(C11)指针空值nullptr(C11)引用 什么叫引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内…...
![](https://img-blog.csdnimg.cn/eff1f640038f49c1a0dd6cdef6927a2f.jpeg#pic_center)
pytest数据驱动
文章目录一、数据驱动概念二、数据驱动yaml1、yaml的基本语法:2、yaml支持的数据格式:3、安装4、使用5、读取方法a、目录结构b、yaml文件c、测试方法d、测试用例e、测试结果三、数据驱动excel1、安装导入2、操作3、读取方法a、目录结构b、excel文件c、测…...
![](https://img-blog.csdnimg.cn/d5b0857e1cb74c5dbd8373fefb42def4.png)
OSI七层网络模型
应用层 定义了各种应用协议规范数据格式:HTTP协议、HTTPS协议、FTP协议、DNS协议、TFTP、SMTP等等。 表示层 翻译工作。提供一种公共语言、通信。 会话层 1、可以从校验点继续恢复数据进行重传。——大文件 2、自动收发,自动寻址的功能。 传输层 1、…...
![](https://img-blog.csdnimg.cn/img_convert/bcda52940cc9314c2ee83180b459f743.webp?x-oss-process=image/format,png)
易基因|MeRIP-seq揭示m6A RNA甲基化通过调控组蛋白泛素化来促进癌症生长和进展:Cancer Res
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。2022年05月16日,《Cancer Res》杂志发表了题为“M6A RNA Methylation Regulates Histone Ubiquitination to Support Cancer Growth and Progression”的研究论文,该…...
![](https://www.ngui.cc/images/no-images.jpg)
Java 日期处理踩过的坑
前言 整理Java日期处理遇到过的问题,希望对大家有帮助 制作不易,一键三连,谢谢大家。 1.用 Calendar 设置时间的坑 反例: //提供者模式获取实例Calendar calendar Calendar.getInstance();//获取当前时间Date currentDate c…...
![](https://img-blog.csdnimg.cn/e15b88a853574cf790eab90d2fca6520.gif#pic_center)
一文吃透 Spring 中的IOC和DI(二)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
![](https://img-blog.csdnimg.cn/img_convert/1a25aa782b666de2964550ebfbbc7594.png)
【期末指北】嵌入式系统——选择题(feat. ChatGPT)
作者|Rickyの水果摊 时间|2023年2月20日 基本信息 ☘️ 本博客摘录了一些 嵌入式系统 的 常见选择题,供有需求的同学们学习使用。 部分答案解析由 ChatGPT 生成,博主进行审核。 使用教材信息:《嵌入式系统设计与应…...
![](https://img-blog.csdnimg.cn/img_convert/00051c589ac826e7cd306bf26fc3cf45.png#pic_center)
MyBatis-Plus——代码生成器(3.5.1+版本)
文章目录配置数据源配置(DataSource)全局配置(GlobalConfig)包配置(PackageConfig)策略配置(StrategyConfig)模板引擎配置(TemplateEngine)代码生成器测试样例…...
![](https://img-blog.csdnimg.cn/img_convert/d39a93be99620fc0b98329d39a2b9570.jpeg)
宁盾上榜第五版《CCSIP 2022 中国网络安全行业全景册》
2月1日,国内网络安全行业媒体Freebuf咨询正式发布《CCSIP(China Cyber Security Panorama)2022 中国网络安全行业全景册》第五版。宁盾作为国产身份安全厂商入驻身份识别和访问管理(SSO、OTP、IDaaS)及边界访问控制&am…...
![](https://img-blog.csdnimg.cn/9b347613c5b54eb1ab026f02776e1b47.png)
【Linux系统】第七篇:Linux调试器gdb的使用
文章目录一、gdb简介二、gdb的安装三、gdb使用3.1、release和debug版本3.2、gdb基本使用命令1、启动gdb2、调试命令3、显示代码(list)4、断点命令(breakpoint)5 、变量命令(variable)6、特殊调试命令7、调用…...
![](https://www.ngui.cc/images/no-images.jpg)
Shell 特殊变量及其含义
shell是我们在linux下编写自动执行程序的常见脚本工具,通常会涉及到以下几个特殊变量,它们分别是:$#、$*、$、$?、$$。 变量含义$0当前脚本的文件名。$n(n≥1)传递给脚本或函数的参数。n 是一个数字,表示…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode 2396. 严格回文的数字
如果一个整数 n 在 b 进制下(b 为 2 到 n - 2 之间的所有整数)对应的字符串 全部 都是 回文的 ,那么我们称这个数 n 是 严格回文 的。 给你一个整数 n ,如果 n 是 严格回文 的,请返回 true ,否则返回 fals…...
![](https://www.ngui.cc/images/no-images.jpg)
【RocketMQ】源码详解:Broker启动流程
Broker启动 入口: org.apache.rocketmq.broker.BrokerStartup#main broker的启动主要分为两部分:1.创建brokerController 2.启动brokerController。与平时进行业务开发时不同的是,这里的BrokerController相当于Broker的一个中央控制器类&…...
![](https://www.ngui.cc/images/no-images.jpg)
vue事件
1. 事件传参 <button click"clickEvt($event, 22)">点我</button>2. 事件修饰符 prevent:阻止默认事件stop:阻止事件冒泡(加到子元素)once:事件只触发一次capture:使用事件的捕获模…...
![](https://img-blog.csdnimg.cn/img_convert/d9170e1401299bd00c2459253ffcddf5.png)
研报精选230220
目录 【行业230220国信证券】银行业行业专题:经济复苏中的优质中小银行【行业230220国信证券】汽车行业周报(2023年第7周):吉利将发布新品牌“银河” ,2022年宇通纯电动客车获欧洲销量冠军【行业230220开源证券】商贸零…...
![](https://www.ngui.cc/images/no-images.jpg)
kubernetes sd configs配置详解
1.基于Kubernetes的服务发现 kubernetes_sd_config 这个是以角色(role)来定义收集的,Kubernetes SD配置允许从Kubernetes的RESTAPI中检索scrape目标,并始终与群集状态保持同步。 凡<role>必须是endpoints,service,pod&…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux查看文件的命令
目录 1、tail 2、head 3、cat 4、more 5、sed 6、less Linux查看日志的命令有多种: tail、cat、tac、head、echo等,本文只介绍几种常用的方法。 1、tail 命令格式: tail[必要参数][选择参数][文件] -f 循环读取 -q 不显示处理信息 -v 显示详细的处理信…...
![](https://img-blog.csdnimg.cn/1327af1ef29146a5a3de394c5ac64156.png)
如何单独清除某个网页的缓存(reload)
有时候在自己服务器上调试的时候,刷新一直不更新,样式改了也看不到,就很烦 今天教你一个方法快速清除 F12 控制台情况下右击左上角的刷新 这三个分别代表: ①正常重新加载(Ctrl R): 正常重新加载 此方法,浏览器发送请求时会…...
![](https://img-blog.csdnimg.cn/img_convert/4b22c4403c644bb48c65276e16d3b9bf.png)
魔兽世界经典怀旧服务器架设教程
准备工具:MySQL服务端服务器最重要的你需要会技术、要不然都瞎扯 给你东西你也看不懂。教程开始:安装MySQL并创建数据库安装MySQL社区版,并配置SQL服务器。安装SQLyog。利用其登录,创建realmd、characters、mangos、scriptdev2数据…...
![](https://img-blog.csdnimg.cn/img_convert/1d27946fa2c1dd7e3a0887b1f4df6137.png)
Interview系列 - 05 Java|Iterator迭代器|集合继承体系|Set List Map接口特性|List实现类区别
文章目录01. 迭代器 Iterator 是什么?02. 迭代器 Iterator 有什么特点?03. 迭代器 Iterator 怎么使用?04. 如何边遍历边移除 Collection 中的元素?05. Iterator 和 ListIterator 有什么区别?06. 数组和集合的区别&…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode 1769. 移动所有球到每个盒子所需的最小操作数
有 n 个盒子。给你一个长度为 n 的二进制字符串 boxes ,其中 boxes[i] 的值为 ‘0’ 表示第 i 个盒子是 空 的,而 boxes[i] 的值为 ‘1’ 表示盒子里有 一个 小球。 在一步操作中,你可以将 一个 小球从某个盒子移动到一个与之相邻的盒子中。…...
![](https://www.ngui.cc/images/no-images.jpg)
MKS SKIPR V1.0船长版(Voron 2.4 R2)配置简要笔记
第一次用MKS SKIPR V1.0,设置过程中,也不知道怎么回事,跟现有的资料有些出入。首先,基本的配置调试可以参考官方的使用说明。 MKS SKIPR V1.0 使用说明书 这个说明比较简单,很多深一点的东西没有提现,不过…...
![](/images/no-images.jpg)
企业黄页信息查询/万词优化
Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程)模式(有些人用“模式-模式”,举个例子,模式可以应用到任何地方…...
![](/images/no-images.jpg)
做ppt的背景图片网站/网络营销案例100例
二叉树的镜像 class Solution { public:TreeNode* mirrorTree(TreeNode* root) {if(root nullptr) return nullptr;swap(root->left,root->right);mirrorTree(root->left);mirrorTree(root->right);return root;} };...
![](/images/no-images.jpg)
刚做的网站适合做外链吗/苏州seo
是40, 在建立数据表的时候要注意一下, 用char类型就可以了转载于:https://www.cnblogs.com/souroot/archive/2012/10/20/2732456.html...
![](/images/no-images.jpg)
公司网站设计主页部分怎么做/google推广
转自:http://wulijun.github.io/2012/09/29/mysql-innodb-intro.html InnoDB是MySQL下使用最广泛的引擎,它是基于MySQL的高可扩展性和高性能存储引擎,从5.5版本开始,它已经成为了默认引擎。 InnODB引擎支持众多特性: 支…...
![](/images/no-images.jpg)
建设网站容易吗/百度一下你就知道百度一下
找出数组中和为某个数的两个数的序号 思路:和为k等价与k-ab,建立字典,遍历每个元素ai 如果k-ai不存在字典中就记下ai的位置i来,到下一个数如果k-ajai在字典中,那么结果就是(i,j) class Solution:def call(self, nums, …...
![](/images/no-images.jpg)
建设网站需要哪些设备/职业技能培训学校
weboffice js操作word导读:就爱阅读网友为您分享以下“js操作word”的资讯,希望对您有所帮助,感谢您对92的支持!1.保存html页面到word***************************************************************************************单元格1单元格…...