匿名函数(lambda)

// 匿名函数
//1. 匿名函数之函数表达式:把一个匿名函数本身作为值赋值给其他东西
// 这种函数一般不是手动触发执行,而靠其他程序驱动触发执行(例如:
// 触发某个事件的时候把它执行)
document.body.onclick = function(){}
setTimeout(function(){},1000);//设置定时器,1000ms后执行匿名函数

//2. 匿名函数之自执行函数:创建完一个匿名函数,紧接着就把当前函数加小括号执行
(function(n){
         //n=>100   
})(100); // <=>  A() 

参考js匿名函数

匿名函数又叫立即执行函数
因为是匿名的,所以不能被调用。
因为不能被调用,所以不立即执行的话就没意义了。
因为立即执行,所以在执行完之后就会被销毁。

  • 用途

可以用它创建命名空间,只要把自己所有的代码都写在这个特殊的函数包装内,那么外部就不能访问,除非你允许。
在实际项目开发中,在一个页面中可能会同时引入多个Javascript代码库,如果每个代码库中的函数都是有名函数,则可能会产生命名冲突。现在很多流行框架都使用自调用匿名函数来解决以上问题。

命名函数与匿名函数

  • 以函数声明的方式声明命名函数
function f1(){
alert(1)
}
  • 以函数表达式的方式声明匿名函数
var f5=function(){
alert(f5);
}
  • 原生匿名函数
第一种(常用)
//( function(){…} )()
(function() {
    alert(1);
})();


第二种(常用)
//( function(){…}() )
(function() {
    alert(2);
}());


第三种(不常用)  若返回值是未知数 x。则得到的返回值是:-(x + 1)
//~function(){…}()
~function() {
    alert(3);
}();
  • 可变函数

在 js 中,大部分函数是有名字的,如果一个函数没有名字,我们把这个函数成为匿名函数。一个可变函数的例子:

function display(){
     alert('hello');
}
var i = display;//把函数名复制给变量i,可变函数,类似于可变变量
i();//调用可变函数

上面可变函数可以写成匿名函数的形式:

var i = function(){
     alert('hello');
}//匿名函数直接赋值
i();
  • 判断是否为匿名函数
    FireFox、Safari、Chrome、Opera都给函数定义了一个非标准的name属性。
alert(f1.name);//f1
alert(f5.name);//""

但是IE不支持这个属性。

  • 自执行匿名函数
    格式:
(function(){
          //代码
 })();

包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号内为匿名函数的参数。
例子:

       (function(arg){
          alert(arg+100);
       })(20);

返回120。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。