回调、匿名函数、闭包

匿名函数:简单来说就是无函数名的函数。
基本写法:

// 用()包起来,没有会语法报错:
(function (){
	alert(1);
})

// 如果需要运行,() ,则自调用:
(function (){
	alert(1);
})()

// 自调用,并传参:
(function (str){
	alert(str);
})("a")

应用场景:

// 1、函数表达式;以此变通,x可以是一个点击事件、可以是对象中的一个方法元素、可以做回调等
var x = function (){
	alert(1);
}

// 2、回调函数;
setInterval(function(){
    alert(1);
},1000);

// 3、模仿块级作用域,优点:减少全局变量可能带来的混乱,并且执行完后会被直接销毁,节省内存。
function fn(){
    (function(){
        var a= 1;
    })();
    alert(a);// a is undefined
}
fn();

// 4、闭包,可访问函数作用域内的变量。
for (var i = 1; i < 3; i++) {
    (function(x) { 
        setTimeout(function() {
            console.log("inner:"+x); // 1、2
         }, 100)
    })(i)
 }
console.log("outer:"+i);  // 3

关于调用,比较二者区别,就懂了:

function fn1(){
    return "a"
}
var way1 = fn1();
console.log(way1); // a
function fn2(){
    return function(){
        return "b";
    }
}
var way2 = fn2();
console.log(way2()); // b,如果way2没有(),匿名函数就无法调用,整个匿名函数就会作为文本返回回来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值