立即执行函数

立即执行函数

此类函数没有声明,执行一次就被释放,函数声明释放==undefined,适合初始化工作

两种写法:

1)(function(){}())—–常用

2)(function(){})()

(function 可名字(可有形参){ 可有执行函数,返回值 } (可有实参))

注意:只有表达式才能被执行符号执行

( function ( ) { } ( ) ) 里面的 function ( ) { } 是表达式,被最后一个()符号执行

如:
1)
function test() {}()//不可执行,不是函数表达式
2)
var num=function () {}()//可执行,var num 变量声明,function(){}赋值到num里的过程叫表达式
3)
+function abc() {}()//可执行,+(正号)将后面的函数声明转化为表达式,自动忽略表达式的名字,-(负号)!

特殊例子:

1、

function test(a, b, c, d) {
    console.log(a + b + c + d);
}(1, 2, 3, 4)

不会报错

系统会理解成

function test(a,b,c,d) {
    console.log(a + b + c + d);
}

(1, 2, 3, 4);//这行表达式没意义,‘,’也是运算符

闭包+立即执行函数 将例1改变

例2

执行结果 0 1 2 3 4 5 6 7 8 9

function test() {
        var arr=[];
        for(var i=0;i<10;i++){
            (function (j) {
                arr[j]=function () {
                    document.write(j+" ");
                }//function () { document.write(j+" ")}此函数内保存了立即执行函数的作用域
            }(i));//立即执行函数
        }//循环内立即执行函数循环10次
        return arr;
    }

   var myarr=test();
    for(var j=0;j<10;j++){
        myarr[j]();
     }

小例子:

var a=(function f() {
    return 5;
});//立即执行函数,f未经声明,会报错,但typeof f    undefined
console.log(f);//报错,f is not defined

立即执行函数撤销的是函数的声明 所以 typeof f—–undefined

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值