匿名函数:简单来说就是无函数名的函数。 基本写法:
// 用()包起来,没有会语法报错:
(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没有(),匿名函数就无法调用,整个匿名函数就会作为文本返回回来
|