JavaScript 立即执行函数篇

JavaScript 立即执行函数篇


什么是立即执行函数?

比如说我现在在全局 function a(){},function b(){},这两个函数假如说写在全局,如果 JavaScript 不执行完,这两个函数永远都是等待被执行,永远释放不了,假如定义一个函数你只想用一次,后边就不用他了,他还一直写在全局不释放,这样的话就很占空间了,鉴于此,JS 给我们提供了一类函数,叫立即执行函数,这种函数执行完马上就释放了,是针对初始化功能的函数,不占用内存空间。

(1) 它的形式:

(function (){

}())

先写一对小括号,然后里边写上 function,都不用起名,然后小括号大括号,最后来个小括号,他也是 js 里唯一一个执行完立即销毁的函数。他和普通函数除了执行完就被销毁之外没有任何区别。他也可以有参数,比如说:

(function (a,b){
	console.log(a + b);
}(1,2)) //输出就得 3

也可以

var num = (function (a,b){
	console.log(a + b);
}(1,2)) 

我们在外边 var 一个 num 接收返回值,那么,num 就是 3.

(2) 它的写法:

第一种:(function (){}()) W3C 组织建议这一种写法
第二种:(function (){})()

(3) 拓展:

只有表达式才能被执行符号执行。

比如说:

function test(){
	console.log(1);
}()

这么写系统会报错,因为这个是函数声明不是表达式,你必须在底下单独写 test(); 下边写的 test 才叫做表达式,像 123、234、1 + 2 这都叫表达式,再比如:

var test = function (){
	console.log(1);
}()

这么写就可以执行,因为它本身就是函数表达式。能被执行符号执行的表达式他的函数名就会被自动放弃,也就是说能被执行符号执行的表达式他就成了立即执行函数,就像上边的,你在后边加了括号就是立即执行,他就成了立即执行函数。再比如:

+ function (){
	console.log(1);
}()

本来他是函数声明,但是你在前边加上正号他就理论上转换为数字了,那他就是一个表达式,你再后边直接加()就会执行,变成立即执行函数,然后忽略函数名,你执行完后输出 test 就会报错,当然前边加上-或者!都可以,&&和||也可以,不过两边都要有东西,但是*和/不行,这里的±代表正负号。再比如:

(function (){
	console.log(1);
}())

我们如果在外边加一个小括号,他也就成了一种表达式,因为我们计算的时候,有时候有小括号,那么,他就会自动放弃函数名,后来人们一看,有没有函数名都无所谓, 所以后来就去掉了,成了现在的立即执行函数(执行符号()放在括号里边或者外边都可以,W3C 组织建议放在里边)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山大王杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值