博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS中的闭包
阅读量:5259 次
发布时间:2019-06-14

本文共 1508 字,大约阅读时间需要 5 分钟。

闭包

     最近在Js的高三的书,看到闭包那块,感觉比较重要,特地记录一下。

     闭包:指有权访问另一个函数作用域中变量的函数,一般形式是函数中嵌套函数,内部函数可以访问外部函数作用域中的变量。

     闭包的产生:当函数被调用时,立即创建函数的执行环境和作用域链,【作用域是指向变量对象列表,他只引用却不包含任何变量对象】,最内层的匿名函数的作用域链包含了上层的活动对象和全局变量对象,当活动对象函数执行完成后,他的作用域链被销毁了,但是他的活动对象依然存在,因为匿名函数仍在引用着,只有匿名函数执行完成后,才会被销毁

 

function CreateComparisonFunction(propertyName) {                    return function (object1, object2) {                        var val1 = object1[propertyName];                        var val2 = object2[propertyName];                        if (val1 > val2) return 1;                        if (val1 < val2) return -1;                        return 0;                    }                }                var dataFunction = CreateComparisonFunction("age");                var val = dataFunction({ age: 16 }, { age: 15 });

  此函数的执行过程如下图所示:

     

      

        另外还有一个比较经典关于闭包的例子

         

function CreateArray() {                    var arr = new Array();                    for (var i = 0; i < 10; i++) {                        arr[i] = function () {                            return i;                        }                    }                    return arr;                }

   以上代码当函数执行完毕后,此时变量i为10,在内部每个函数都引用着保存着变量i的对象,所以每个函数的i都为10,此时可通过闭包实现让每个函数独立包含不用的引用对象

function CreateArray() {            var arr = new Array();            for (var i = 0; i < 10; i++) {                arr[i] = function (num) {                    return function () { return num; }                } (i)            };            return arr;        }

      

    

转载于:https://www.cnblogs.com/JaggerMan/p/4394690.html

你可能感兴趣的文章
前台freemark获取后台的值
查看>>
Spring-hibernate整合
查看>>
exit和return的区别
查看>>
Django 相关
查看>>
Python(软件目录结构规范)
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
条件断点 符号断点
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
Java基础教程——网络基础知识
查看>>
Kruskal基础最小生成树
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
javascript之Style物
查看>>
Factory Design Pattern
查看>>
P1192-台阶问题
查看>>
网站产品设计
查看>>
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>