码迷,mamicode.com
首页 > 编程语言 > 详细

javascript(一)

时间:2017-05-11 12:50:55      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:ber   闭包函数   返回   不能   ons   str   ret   console   set   

     javascript 数据类型

  • 5种简单数据类型:Number、String、Boolean、Undefined、Null
  • 1种复杂数据类型:Object

 

      JavaScript的闭包

  • 闭包简单的说就是一个函数能访问外部函数的变量,这就是闭包,比如说:

    function a(x){

       var tem=3;

       function b(y){
          console.log(x+y+(++tem));
       }
    }
a函数中的b函数就是闭包了,b函数可以使用a函数的局部变量,参数,最典型的闭包应该是下面这样,将定义在函数中的函数作为返回值

function a(x){
       var tem=3;
      function b(y){
          console.log(x+y+(++tem));
       }
  return b;
  } 

闭包的另一种作用是隔离作用域

for(var i=0;i<2;i++){
      setTimeout(function(){
              console.log(i);
        },0);
}

上面这段代码的执行结果是2,2而不是0,1,因为等for循环出来后,执行setTimeout中的函数时,i的值已经变成了2,这就是没有隔离作用域所造成的

for(var i=0;i<2;i++){
      (function(i){
             setTimeout(function(){
              console.log(i);
        },0)
    })(i);
}

这样就会输出0,1,我们的立即执行函数创建了一个作用域,隔离了外界的作用域,闭包的缺点是,因为内部闭包函数可以访问外部函数的变量,所以外部函数的变量不能被释放,如果闭包嵌套过多,会导致内存占用大,要合理使用闭包。

 
 

    

         

javascript(一)

标签:ber   闭包函数   返回   不能   ons   str   ret   console   set   

原文地址:http://www.cnblogs.com/sharyn/p/6840381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!