ES5中的立即执行函数

ES5中的立即执行函数:IIFE
立即执行函数的一大作用是方便的创建私有变量,以免污染全局变量,虽然在ES6的let和const出来之后已经不需要如此麻烦的去用这种方法来创建私有变量,但是在这个ES5和ES6同时存在的时代,我们还是有必要去学习一下IIFE。

我们知道,在js这门语言中,调用一个函数最小白的方法是方法名后加上括号,如foo(),那么如果这是个匿名函数呢?我们要怎么调用它呢?
一个方法是将匿名函数的指针指向一个变量,如:

var foo = function() {}

然后再用foo()形式进行调用。那么如果我们没有定义一个变量来储存匿名函数的地址呢?这里就可以用到立即执行函数:用括号将函数声明包起来,使之成为函数表达式,再进行调用。

立即执行函数的几种形式:
1. 针对具名函数

(function foo() {
    console.log(1111) 
})() //打印出1111

或者:

(function foo() {
    console.log(1111) 
}()) //打印出1111

就是说最后的括号可以放在前面一个括号的里面,也可以放在它的外面。
2. 针对匿名函数(与具名函数一样)

(function() {
    console.log(1111)
}()) //打印出1111

或者

(function() {
    console.log(1111)
})()  //打印出1111

同样的,最后的括号可以放在前面一个括号的里面,也可以放在它的外面。

就是说立即执行函数可以针对具名函数和匿名函数使用。

当然:我们也可以从外面传一个变量进去这个局部作用域,如jQuery的扩展实现

(function($) {
    $.fn.myPlugin = function() {
        console.log(111111)
    }
})(jQuery)

这样可以避免局部作用域中的$由于库的冲突造成的不准确。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值