搞明白JavaScript中的匿名函数
程序员文章站
2022-04-05 15:20:24
...
一般的有名函数:
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);//12
for(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、模拟块级作用域,减少全局变量。执行完匿名函数,存储在内存中相对应的变量会被销毁,从而节省内存。再者,在大型多人开发的项目中,使用块级作用域,会大大降低命名冲突的问题,从而避免产生灾难性的后果。自此开发者再也不必担心搞乱全局作用域了。
上一篇: 对象创建的三种方式
推荐阅读
-
js类中获取外部函数名的方法_javascript技巧
-
Javascript 函数中的参数使用分析_javascript技巧
-
PHP实现Javascript中的escape及unescape函数代码分享,escapeunescape
-
JavaScript中Function()函数的使用教程
-
JavaScript中利用构造器函数模拟类的方法
-
JavaScript中全局变量、函数内变量以及常量表达式的效率测试_javascript技巧
-
Javascript-Mozilla和IE中的一个函数直接量的问题分析_javascript技巧
-
Javascript中Eval函数的使用说明_javascript技巧
-
JavaScript中各种编码解码函数的区别和注意事项_javascript技巧
-
JavaScript中什么是匿名函数?