zoukankan      html  css  js  c++  java
  • JavaScript 立即执行函数和闭包

    闭包

    function A(){
            function B(){
                console.log("hello world");
            }
            return B;
    }
    var c = A();
    c();//hello world

    这就是一个最简单的闭包

    翻译为自然语言如下

    • 定义普通函数A
    • 在A中定义普通函数B
    • 在A中返回B
    • 执行A,并把A执行结果赋值给变量C
    • 执行C

    当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。

    立即执行函数

    此类函数没有声明,再一次执行过后即释放。适合做初始化工作

    //立即执行函数 也会有预编译的过程
    var num = (function(a,b,c){
            var d= a+b+c*2-2;
            return d;
    
    }(1,2,3))

    立即执行函数的两种写法

    • (function(){}()); W3C 建议第一种
    • (function(){})();

    关键点补充:

    • 只有表达式才能被执行符号执行
    //此为函数声明,不可以被执行符号执行
    function
    test(){ var a = 123; }();
    • 能被执行符号执行会忽略函数的名称
    //&& || + - ! 会让函数声明变成表达式,加上执行符号 即立即执行函数,然后忽略函数名称
    !function test(){
    
    }()
    所以立即执行函数可写成
    (function(){}());

    例题

    function test(a,b,c,d){
         console.log(a+b+c+d);
        }(1,2,3,4);

    正常不能执行,系统识别成了

    function test(a,b,c,d){
         console.log(a+b+c+d);
        }
        
        
        (1,2,3,4);

    这样就不会报错,但并不是立即执行函数

  • 相关阅读:
    php 基本符号
    php-fpm 启动和关闭
    php redis安装
    nginx 的安装
    Windows下Nginx的安装与配置
    apache 限制IP网段访问
    解决mysql导入导出数据乱码问题
    log_bin_trust_function_creators错误解决
    Mysqlbinlog使用
    通过yum安装Nagios
  • 原文地址:https://www.cnblogs.com/FashionDoo/p/10478770.html
Copyright © 2011-2022 走看看