本文主要是介绍搞明白JavaScript中的匿名函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一般的有名函数:
function myFun( a,b ){console.info( a+b );
}
myFun( 10 , 30 ); // 输出40
匿名函数: 有关键词 function, 有小括号,有大括号,就是没有函数名。
function(a,b){console.info( a+b );
}
想要执行它,怎么执行?没有名字,怎么调用?
方式一:把它放进一个变量里,这个变量就相当于一个函数名了。没有名字的匿名函数,变成有“名”函数了。
let myFun = function( a,b ){console.info( a+b);
};myFun( 10,30 )
方式二:干脆不要名字,直接执行~
//匿名函数在其它应用场景括号可以省略
(function (){//由于没有执行该匿名函数,所以不会执行匿名函数体内的语句。console.log("张培跃");
})
如果需要执行匿名函数,在匿名函数后面加上一个括号即可立即执行!
(function (str){//此时会输出张培跃好帅!console.log("张培跃"+str);
})("好帅!")
匿名函数的应用场景
3、对象
4 回调函数
5 返回值
模仿块级作用域
块级作用域,有的地方称为私有作用域。JavaScript中是没有块级作用域的,例如:
if(1==1){//条件成立,执行if代码块语句。var a=12;//a为全局变量
}
console.log(a);//12for(var i=0;i<3;i++){console.log(i);
}
console.log(i);//4
if(){}for(){}等没有自己的作用域。如果有,出了自己的作用域,声明的变量就会立即被销毁了。但是咱们可以通过匿名函数来模拟块级作用域:
(function(){//这里是我们的块级作用域(私有作用域)
})();
尝试块级作用域:
function fn(){(function(){var la="啦啦啦!";})();console.log(la);//报错---la is not defined
}
fn();
匿名函数的作用:
1、通过匿名函数可以实现闭包,关于闭包在后面的文章中会重点讲解。在这里简单介绍一下:闭包是可以访问在函数作用域内定义的变量的函数。若要创建一个闭包,往往都需要用到匿名函数。
2、模拟块级作用域,减少全局变量。执行完匿名函数,存储在内存中相对应的变量会被销毁,从而节省内存。再者,在大型多人开发的项目中,使用块级作用域,会大大降低命名冲突的问题,从而避免产生灾难性的后果。自此开发者再也不必担心搞乱全局作用域了。
Javascript之闭包以及闭包实例和常见面试题
这篇关于搞明白JavaScript中的匿名函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!