自动执行的匿名函数

时间:2022-02-25 19:15:24
函数:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.
函数是JavaScript中最灵活的一种对象. 匿名函数指没有指定函数名或指针函数, 自执行匿名函数只是其中一种.
匿名函数就是没有名字的函数,个人理解.也叫作闭包函数.允许临时创建一个没有指定名称的函数.
函数:
function 函数名(参数列表){
  //函数体
};
匿名函数:
function (参数列表){
  //函数体
};
因为是匿名函数,所以一般也不会有参数传给它.
为什么要创建匿名函数?在什么情况下使用匿名函数?
1.回调函数 例如:$(selector).hide(speed,callback);
2.自执行函数
传统自执行函数的格式:
 1 (function(){
 2     //代码
 3 })();
 4 /**
 5  * 包围函数
 6  * (function(){
 7  *    //代码
 8  * })
 9  * 返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号内是匿名函数的参数
10  */
11 
12 (function (arg) {
13     console.log(arg+100);
14 })(20);
15 /**
16  * 控制台打印结果:120
17  * 作用:
18  * 可以用它创建命名空间, 只要把自己所有的代码都写在这个特殊的函数包装里, 那么外部就不能访问,除非你允许.
19  */
20 
21 /**
22  * 是什么促使它自动执行?
23  * 在传统写法上去掉小括号, 并在前面加上运算符 ~, !, +, -
24  */
25 ~function (arg) {
26     console.log(arg+100);
27 }(20);
28 !function (arg) {
29     console.log(arg+100);
30 }(20);
31 +function (arg) {
32     console.log(arg+100);
33 }(20);
34 -function (arg) {
35     console.log(arg+100);
36 }(20);
37 /**
38  * 这些写法与上文中所说的传统方式执行起来并无区别.
39  * 小括号()也属于运算的一种, a = b * ( c + d );
40  * 运算符 + 传递给自身的参数 = 函数自动执行 ? 但有些符号也不支持, 比如 =, *, /, 至于为什么制动执行,我还不知道.
41  * 还有就是这些运算符可以无限叠加.
42  */
43 // function前面是特定符号可以无限叠加...
44 ~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+function (arg) {
45     console.log(arg+100);
46 }(20);
47 /**
48  * 上面的程序可以正常打印.
49  * 但是, 有一种情况也会报错.
50  * 就是出现++或者--,怎会出错.错误信息:SyntaxError: expected expression, got '-'
51  */
jQuery就是一个大的立即执行匿名函数.
jQuery插件代码格式:
1  ;(function($){//可以去掉开发的;(分号), 国外的开发人员编写插件的一种习惯
2 $.fn.pluginName = function () {
3 //我的自己的代码
4 };
5 })(jQuery);
6 /**
7 * 传入一个 jQuery 的参数, 其实就是匿名函数的参数 $ 的值为 jQuery ,
8 * 因为该方法是对 jQuery 库的扩展, 那么在该方法体内就可以调用 jQuery 库中的函数; 若不传入,则无法使用 jQuery 库
9 */