// 匿名函数
//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。