立即执行函数

立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,比如:


(function () {
    alert('watch out!');
}());

这种模式有一些几部分组成:
使用函数表达式定义一个函数(函数声明不能起作用)在结尾加上一对括号,让函数立即被执行
将整个函数包裹在一对括号中(只有在你不将函数赋值给一个变量的时候才需要)
立即执行函数的参数


// prints:
// I met Joe Black on Fri Aug 13 2010 23:26:59 GMT-0800 (PST)
(function(who, when) {
    console.log("I met " + who + " on " + when);
} ("Joe Black", new Date()));

通常,全局变量被作为一个参数传递给立即执行参数,这样它在函数内部不使用window也可以被访问到:这种方式可以让代码在环境中更加通用:


(function (global) {

}(this));

立即执行函数的返回值

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


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

另外一种实现相同的功能的方法是省略包裹函数的括号,因为当你将立即执行函数的返回值赋值给一个变量时它们不是必需的;

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

如果没有注意到函数结束的括号,一些人可能就会认为result指向一个函数;
实际上result指向立即执行函数的返回值,在这种情况下是数字 4 。

在前面的例子中返回一个基本类型的整数作为立即执行函数的返回值;
但是除了基本类型值,立即执行函数也能返回任何类型的值,包括其它的函数,那么就可以利用立即执行函数的作用域为返回的内部函数私下里存储一些数据。


var foo= (function() {
    var res = 2 + 2;
    return function() {
        return res;
    };
} ());

立即执行函数的返回值是一个函数——被赋值给了变量foo,这个函数简单的返回了res的值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值