函数:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.
函数是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 */