zoukankan      html  css  js  c++  java
  • 自动执行的匿名函数

    函数:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.
    函数是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 */
  • 相关阅读:
    2019第二周作业
    2019 编程总结
    寒假作业2编程总结
    2018秋季学习总结
    喜欢的老师
    人生路上对我影响最大的三位老师
    自我介绍
    抓老鼠啊~亏了还是赚了?
    币值转换
    打印沙漏
  • 原文地址:https://www.cnblogs.com/liubeimeng/p/5842074.html
Copyright © 2011-2022 走看看