JS立即执行函数

此类函数没有声明,在一次执行后即释放(销毁)。

好处:为了避免变量污染(命名冲突),适合做初始化工作。相当于创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏污染全局的命名空间。

(PS:: 立即执行函数有预编译,有执行期上下文,但运行结束后会销毁)

一、JS立即执行函数的写法

 

方式1、最前最后加括号
 

(function(){alert(1);}()); 

 

方式2、function外面加括号

 

(function(){alert(1);})(); 

 

方式3、function前面加运算符,常见的是!与void

 

!function(){alert(1);}(); 
void function(){alert(2);}(); 

 

二、立即执行函数的参数

可以给立即执行函数传递参数,例如

 

(function(who, when) {
    console.log("I met " + who + " on " + when);
} ("Joe Black", new Date()));

记住:

1、立即函数内部是可以访问外部变量的,所以很多情况下,我们并不需要传参数。如:jQuery的window实参,如果不传入。内部也是可以直接使用的。

2、通常你不应该给立即执行函数传递太多的函数,因为它很快会成为一个负担——为了理解代码是如何工作的,你不得不经常上下滚动源代码。

 

三、立即执行函数的返回值

像其它任何函数一样,一个立即执行函数也能返回值并且可以复制给其它变量,例如

 

var result = (function () {
    return 2 + 2;
}());

 

var result = (function () {
    return 2 + 2;
})();

 

四、立即执行函数的好处

1、立即执行函数模式被广泛使用,它可以帮你封装大量的工作而不会在背后遗留任何全局变量。

2、定义的所有变量都会成员立即执行函数的局部变量,所以你不用担心这些临时变量会污染全局空间。

 

3、这种模式经常被使用在书签工具(bookmarklets)中,因为书签工具在任何页面上运行并且保持全局命名空间干净是非常必要的;

 

4、这种模式也可以让你将独立的功能封装在自包含模块中。

 

5、可以将这些代码封装进一个立即执行函数中,并且确保页面没有它的情况下也能正常工作。

6、可以添加更多的加强模块,移除它们,单独测试它们,允许用户去禁用它们等等。

 

 

 

 

五、注意点

立即执行函数通常作为一个单独模块使用。一般没有问题,但是,建议在自己写的立即执行函数前加分号,这样可以有效地与前面代码进行隔离。否则,可能出现意想不到的错误。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值