JavaScript之闭包

闭包

  1. 是通过调用函数,产生临时的内存空间
  2. js是一门脚本语言,加载js有两个步骤: 1.加载定义(预加载)   2.执行代码
  3. 加载定义: var a;   //定义对象 
  4.      function m();   //定义方法
  5. 闭包特性:闭包中的变量,外部不能访问(保护内部,防止变量污染)

----------------------------------------------------------------------------------

匿名函数: (function(){} () )

有名函数: var util=function(){}

----------------------------------------------------------------------------------

区别:   function fun() {   console.log(1)   }     fun();//调用

  var fun=function(){   console.log(1)  }    

两者结果都是打印出  1 。  但两者有何区别呢???

其实就是就是前者开辟一个栈空间,而后者先开辟堆空间,再开辟栈空间 ,共开辟两个空间

jquery库源码解析后其实就是我们熟悉的闭包: ( function() {}   () ),有兴趣可以去试试

-----------------------------------------------------------------------------------

闭包例子帮助理解什么是闭包:

闭包具有就近原则,先找离自身最近的对象,如果找不到会像冒泡事件,一层一层往外层查找,直到找到对象。同时外部无法改变内部的属性。

var golbal="nike"

(function(golbal,tag){

  console.log(golbal);

  console.log(tag);    

}(window,123))

//打印结果: window

      123

再来一个案例:

var util=(function(){    //var util是暴露接口,已便调用传入

  return:{

      sayname:function(name){

        console.log('hello ,'+name)

      }

    }

}())

  util.sayname("Arthur")

//打印结果 hello , Arthur

--------------------------------------------------------------------------------------

怎么说呢,闭包是个好东西,要多使用,你会发现现在大多数人写js都是使用闭包的方法。因为它具有良好的特性。

猜你喜欢

转载自www.cnblogs.com/Arthur123/p/9030468.html