js的匿名函数的理解
//普通函数
/*function box(){
return ‘abc’
}
window.alert(box());*/
//普通函数 /*function box(){ return 'abc' } window.alert(box());*/
/*匿名函数:就是没有给名称的函数或者名称被隐藏的函数; function(){ return 'abc'; } 单独使用会报错;就算能够运行,也不能够调用,因为没用函数名; */
/* //把匿名函数赋值给变量的做法 var box=function(){ return 'abc'; };//这是一个语句,所以结束会有一个分号; window.alert(box);//打印出的是box的整个函数体;*/
/* 第一步:先构造一个匿名函数 //function(){ return 'abc'; }*/
/* 第二步:函数要执行的是'XXX()'的形式;所以下面执行函数: function() {return 'abc';}(); 放在一行上是为了好看;换行不影响; 然而,这样并不能执行,执行控制台会报错;正常执行函数"XXX()"的括号 前是一个表达式;而此处的括号前是一个函数:function(){return 'abc';} 说要执行这个还得进行第三步; */
/* 第三步:给括号前的表达式加上(); (function(){return 'abc';})(); 形式:(匿名函数)();第一个括号装匿名函数;第二个括号执行; 这样就可以执行了;但是函数体return;看不到结果;可以写成 aler('abc'); 即(function(){alert('abc');})(); */
/* 由于函数一般是return来做返回的;所以上面的代码可以改成如下: 把匿名函数自我执行之后的值传给一个变量;然后打印 var box = (function(){ return 'abc'; })(); alert(box);//abc 当然也可以直接利用alert打印匿名函数自我执行之后的值 alert((function(){ return'abc'; })());//abc */ /* 第四步:自我执行匿名函数的传参 (function(age){ alert(age); })(100); //100 */
/*闭包:函数里面放函数; 1、一个普通函数里面放一个匿名函数; function box(){ return function(){ return 'abc'; } } alert(box); //执行结果function box(){ return function(){ return 'abc'; } }// function box(){ return function(){ return 'abc'; } } alert(box());// 执行结果function(){ return 'abc'; }// function box(){ return function(){ return 'abc'; } } alert(box()());//执行结果 abc */ /*另一种理解方法:借用第三方变量获得box函数的返回值 function(){return 'abc';} function box(){ return function(){ return 'abc'; } }; var b = box(); alert(b);
然后在利用b();去执行获得返回值;从而获得结果 abc function box(){ return function(){ return 'abc'; } }; var b = box(); alert(b()); */