匿名函数就是没有实际名字的函数。QmJHTML5中文学习网 - HTML5先行者学习网
javaScript的匿名函数形式多样,而且不搞清楚,容易看晕代码。QmJHTML5中文学习网 - HTML5先行者学习网
以下是成功调用的匿名函数:QmJHTML5中文学习网 - HTML5先行者学习网
QmJHTML5中文学习网 - HTML5先行者学习网(function () {
QmJHTML5中文学习网 - HTML5先行者学习网alert(3);
QmJHTML5中文学习网 - HTML5先行者学习网})
QmJHTML5中文学习网 - HTML5先行者学习网();
QmJHTML5中文学习网 - HTML5先行者学习网(function f1() {QmJHTML5中文学习网 - HTML5先行者学习网
alert(4);QmJHTML5中文学习网 - HTML5先行者学习网
})(); //不是匿名函数也能这样调用!!QmJHTML5中文学习网 - HTML5先行者学习网
void function(){QmJHTML5中文学习网 - HTML5先行者学习网
alert('void water');QmJHTML5中文学习网 - HTML5先行者学习网
}();//据说效率最高,Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。QmJHTML5中文学习网 - HTML5先行者学习网
QmJHTML5中文学习网 - HTML5先行者学习网
!function(){QmJHTML5中文学习网 - HTML5先行者学习网
alert('!water');QmJHTML5中文学习网 - HTML5先行者学习网
}(); //运算符+匿名函数调用QmJHTML5中文学习网 - HTML5先行者学习网
(function(){QmJHTML5中文学习网 - HTML5先行者学习网
alert('water');QmJHTML5中文学习网 - HTML5先行者学习网
}());//小括号+匿名函数,有点强制执行的味道~QmJHTML5中文学习网 - HTML5先行者学习网
QmJHTML5中文学习网 - HTML5先行者学习网使用匿名函数也要注意经常犯的错误:
QmJHTML5中文学习网 - HTML5先行者学习网QmJHTML5中文学习网 - HTML5先行者学习网//错误写法1
QmJHTML5中文学习网 - HTML5先行者学习网(function f1() {
QmJHTML5中文学习网 - HTML5先行者学习网alert(5);
QmJHTML5中文学习网 - HTML5先行者学习网})f1(); //这不是匿名函数了!
QmJHTML5中文学习网 - HTML5先行者学习网//错误写法2QmJHTML5中文学习网 - HTML5先行者学习网
(function () {QmJHTML5中文学习网 - HTML5先行者学习网
alert(6);QmJHTML5中文学习网 - HTML5先行者学习网
}); //语法没有错误,没有调用的匿名函数,后面也没有机会调用了,因为没有名字,找不到调用入口。QmJHTML5中文学习网 - HTML5先行者学习网
//错误写法3QmJHTML5中文学习网 - HTML5先行者学习网
function () {QmJHTML5中文学习网 - HTML5先行者学习网
alert(1);QmJHTML5中文学习网 - HTML5先行者学习网
}();//没有产生函数的引用就调用QmJHTML5中文学习网 - HTML5先行者学习网
QmJHTML5中文学习网 - HTML5先行者学习网另外要注意理解小括号的作用。
QmJHTML5中文学习网 - HTML5先行者学习网小括号能把我们的表达式组合分块,并且每一块,也就是每一对小括号,都有一个返回值。这个返回值实际上也就是小括号中表达式的返回值。所以,当我们用一对小括号把匿名函数括起来的时候,实际上小括号对返回的,就是一个匿名函数的Function对象。因此,小括号对加上匿名函数就如同有名字的函数般被我们取得它的引用位置了。所以如果在这个引用变量后面再加上参数列表,就会实现普通函数的调用形式。QmJHTML5中文学习网 - HTML5先行者学习网