JavaScript:立即执行函数
想象一下,如果我希望某个代码块,只执行一次,就不再执行,应该怎么办?
代码块肯定是用函数来表示,执行肯定是调用函数,但是确保只执行一次,该怎么办?
我们为什么可以多次调用函数,因为函数名指向了函数的内存区域,通过函数名()的方式去调用函数;
那没有函数名,不就可以不被多次调用吗,也就是说,我们需要声明一个匿名函数,并且立即去调用;
函数表达式和箭头函数都可以声明一个匿名函数;
有两种写法:
- 用括号,将匿名函数括起来,再加上 - ()去调用;
- 匿名函数加上 - ()先调用,再用括号括起来,但是箭头函数不能这样写,会报错;- 具体如下图所示: 

这样的写法,函数只执行一次,并且是立即执行,执行完毕以后,因为没有函数名指向这块内存区域,故而会被垃圾回收;
这样的做法,
可以提高代码运行效率;
可以使函数内声明的变量,执行完毕以后就被垃圾回收,不会引起全局污染;
可以用在初始化上,先执行初始化,完毕以后就垃圾回收,节省内存;
JavaScript:立即执行函数的更多相关文章
- javascript立即执行函数
		javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花;当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( ... 
- JavaScript 立即执行函数
		js中(function(){…})()立即执行函数写法理解 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法 ... 
- javascript立即执行函数 (function(){})()
		看到一段代码: (function(){ var outer = $('#subject'); outer.find('li').on('mouseover', mouseover); })() ( ... 
- (译)详解javascript立即执行函数表达式(IIFE)
		写在前面 这是一篇译文,原文:Immediately-Invoked Function Expression (IIFE) 原文是一篇很经典的讲解IIFE的文章,很适合收藏.本文虽然是译文,但是直译的 ... 
- javascript自执行函数为什么要把windows作为参数传进去
		http://segmentfault.com/q/1010000000311686 (function (window, $, undefined) { play=function(){ $(&qu ... 
- 详解javascript立即执行函数表达式(IIFE)
		立即执行函数,就是在定义函数的时候直接执行,这里不是申明函数而是一个函数表达式 1.问题 在javascript中,每一个函数在被调用的时候都会创建一个执行上下文,在函数内部定义的变量和函数只能在该函 ... 
- Javascript 自动执行函数(立即调用函数)
		开头:各种原因总结一下javascript中的自动执行函数(立即调用函数)的一些方法,正文如下 在Javascript中,任何function在执行的时候都会创建一个执行上下文,因为function声 ... 
- javascript立刻执行函数
		一般常见的立刻执行函数推荐如下两种: (function(a){ console.log(a); })("kk"); (function(a){ console.log(a) }( ... 
- javascript立即执行函数与模块化
		概念:立即执行函数顾名思义就是函数定义好之后立即执行.函数表达式方式:函数表达式后面加括号()即可立即执行函数. var xmlhttpUtil = function () { function ge ... 
- javascript异步执行函数导致的变量变化问题解决思路
		for(var i=0;i<3;i++) { setTimeout(function(){ console.log(i) },0); }控制台输出:333 这是因为执行方法的时候for循环已经执 ... 
随机推荐
- 企业使用erp系统的好处及解决了什么问题?
			不是所有的企业使用ERP都能带来好处的,尤其是对于一些小微企业,带来的可能是灾难,而实施不适用的系统同样也会带来意想不到的后果,所以在ERP的使用方面得根据自己企业实际做决定.不同规模的企业选用不同的 ... 
- ARC148游记
			A - mod M 题目链接 这道题我们可以首先对于所有的数 $%2$ ,可以证明出答案最多不超过 $2$ ,此时我们就可以把问题转化为:是否存在一个数使得序列 $a$ 中所有元素减去这个数之后的最大 ... 
- spring boot集成redis基础入门
			redis 支持持久化数据,不仅支持key-value类型的数据,还拥有list,set,zset,hash等数据结构的存储. 可以进行master-slave模式的数据备份 更多redis相关文档请 ... 
- ciscn 2022 misc 部分wp
			 目录 everlasting_night ez_usb everlasting_night 提示是注意png数据块 然后注意图片通道数据可以用来lsb解码 下载是一张图片,尝试几种方法之后没有太大 ... 
- 基于BP神经网络的手MNIST写数字识别
			import numpy import math import scipy.special#特殊函数模块 import matplotlib.pyplot as plt #创建神经网络类,以便于实例化 ... 
- 17.ViewSet和Router
			REST框架为我们提高了一个更加抽象的ViewSet视图集,ViewSet提供一套自动的urlconf路由 ViewSet与View类几乎相同,不同之处在于它们提供诸如read或update之类的操作 ... 
- 云原生之旅 - 6)不能错过的一款 Kubernetes 应用编排管理神器 Kustomize
			前言 相信经过前一篇文章的学习,大家已经对Helm有所了解,本篇文章介绍另一款工具 Kustomize,为什么Helm如此流行,还会出现 Kustomize?而且 Kustomize 自 kubect ... 
- go基础语法50问,来看看你的go基础合格了吗?
			目录 1.使用值为 nil 的 slice.map会发生啥 2.访问 map 中的 key,需要注意啥 3.string 类型的值可以修改吗 4.switch 中如何强制执行下一个 case 代码块 ... 
- Codeforces Round #805 (Div. 3)G2. Passable Paths
			题目大意: 给出一个无向无环连通图(树),n个点n-1条边,m次查询,每次询问给出一个集合,问集合里的树是否都在同一条链上(即能否不重复的走一条边而遍历整个点集) 思路:通过求lca,若有三个点x,y ... 
- Oracle:ORA-00911: invalid character解决办法
			问题记录:用jmeter执行sql语句,报错:ORA-00911: invalid character. 解决方法:sql语句末尾";"导致,去掉即可解决. 过程记录: 使用jme ... 
