• 一.js高级(7)-闭包2


    要理解闭包的概念,先了解js执行函数的过程: 

      js在执行函数作用域之前,会将所有的变量按照 local global , closure 分类声明

        1)  var 声明的变量赋值 undeifned

        2)  function func() {}  形式定义的函数放在 Functions 中, function 在js中是一级对象,他可以拥有属性和方法,无论任何情况下都会有返回值; 当用new形式加载function时, 返回this; 其他除了显性定义 return, 返回值都是undefined;

        3)  当js碰到每个每个函数作用域, 在声明函数作用域的本地变量的同时, 为所在函数的体内引用到的外界变量创建 closure; 在closure里面存储的变量有个神奇的地方: 它会对他内部所有的代码检查是否存在引用上下文变量的情况,如果存在,就将它引入 closure; (也可以看出为什么递归在js中国容易出现栈溢出的情况)

        

    function say6() {
            //局部变量num最后会保存在闭包中
            var num = 10;
            var say = function () {
                console.log(num);
            }
            num++;
            return say;
    
        }
        var sayNum = say6();
        sayNum();//11
  • 相关阅读:
    Redis——发布/订阅
    Redis——任务队列
    GOF设计模式——Builder模式
    GOF设计模式——Prototype模式
    GOF设计模式——Singleton模式
    shell 脚本中的数学计算表达
    shell $'somestring'
    shell if-elif-elif-fi
    vim 使用
    疑问:为什么要使用href=”javascript:void(0);”?
  • 原文地址:https://www.cnblogs.com/noraZhang/p/10110961.html
Copyright © 2020-2023  润新知