定义并立即执行匿名函数的用法

红皮书上有一个例子

            function createFunctions(){
                var result = new Array();
                for (var i=0; i < 10; i++){
                    result[i] = function(n){return function(){return n;};}(i);   
                }
                return result;
            }
            var funcs = createFunctions();
            //every function outputs 10
            for (var i=0; i < funcs.length; i++){
                document.write(funcs[i]() + "<br />");
            }

想看看匿名函数的替代写法,于是尝试修改,变换一种写法,发现得到了一样的结果。

            function createFunctions(){
                var result = new Array();
                for (var i=0; i < 10; i++){
                    result[i] = subFunc(i);//function(n){return function(){return n;};}(i);   
                }
                return result;
            }
            function subFunc(n){
                return function(){
                    return n;
                }
            }            
            var funcs = createFunctions();
            alert(funcs);
            //every function outputs 10
            for (var i=0; i < funcs.length; i++){
                document.write(funcs[i]() + "<br />");
            }
这说明,
result[i]=function(n){return function(){returnn;};}(i); 相当于
result[i]=subFunc(i); function subFunc(n){return function(){ return n;} } 

像第一个例子这样就是定义匿名函数并立即执行的用法啦。

发现有好多种写法可以定义并且立即执行匿名函数,现罗列于下方,供日后备用。
1  (function(){alert("hi!")})();
2 (function(){alert("hi!")}).call();
3 (function(){alert("hi!")}).apply()
4  var func=function(){alert("hi!")}();
5 var func=function(){alert("hi!")}.call();
6 var func=function(){alert("hi!")}.apply()
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值