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变量,所以说是扩张
    }
     
  • 相关阅读:
    mysql对库,表,数据类型的操作以及完整性约束
    mysql数据库初步了解
    响应式及Bootstrap
    事件流丶事件对象
    JQuery初识(三 )
    JQuery初识(二)
    JQuery初识
    sencha touch tpl 实现按钮功能
    sencha touch 分享到微博扩展
    sencha touch 隐藏滚动条样式的几种方式
  • 原文地址:https://www.cnblogs.com/chuangweili/p/5159821.html
Copyright © 2011-2022 走看看