zoukankan      html  css  js  c++  java
  • 闭包

    闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。当一个函数初始化的时候会把他的执行上下文记录在内部变量[[scope]]里,当函数被调用时,一个新的执行上下文对象产生,先复制他的scope,然后把目前的上下文塞进去。
     
    使用闭包很多时候是为了保留特定的执行上下文。
     
    var myobject = (function() {
         var   value = 0;
         return {
               setValue: function(x)  {
                     value  += x;
               },
               getValue: function()  {
                     return value;
               }
         }
    })();
     
    注意最后一行的 () ,
    并不是将一个函数赋给myobject ,而是将调用该函数后的返回的对象赋值给它。
    在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
     
     
    拓展scope chain
    with,和catch可以拓展作用域链scope chain,也就是在这两个表达式的代码里会产生various object,但是比较特别:
    function buildUrl() {
    var qs = “?debug=true”;
    with(location){
        var url = href + qs;
    }
    return url;              //这里在with块外面,但是仍然保留了URL变量,所以说是扩张
    }
     
  • 相关阅读:
    python之安卓逆向HOOK系统通用类
    MySQL 排名、分组后组内排名、取各组的前几名
    MySQL case
    MySQL 行列相互转换
    MySQL学习笔记(四)
    回归分析
    构建决策树
    用K-Means聚类分析做客户分群
    会员数据化运营
    数据降维——主成分分析、因子分析、线性判别分析
  • 原文地址:https://www.cnblogs.com/chuangweili/p/5159821.html
Copyright © 2011-2022 走看看