猿问

js闭包两种写法的区别

(function(j) {  // j = i

    setTimeout(function() {

        console.log(new Date, j);

    }, 1000);

})(i);

function f1(){

    var n=999;

    nAdd=function(){n+=1}

    function f2(){

      alert(n);

    }

    return f2;

  }

  var result=f1();

  result(); // 999

例子是随便找的,这两种写法有什么区别和相同点呢?


弑天下
浏览 536回答 2
2回答

慕哥6287543

不太清楚你想了解什么闭包就是一种特性,用在哪里的目的都是保存上一层的作用域内的变量,没有什么区别硬要说区别只是你用他的特性来做不同的事情在我的理解里,你直接在全局作用域下定义一个函数,他也是一个闭包,因为他随时都可以访问到顶层作用域里的变量再说一下你举的例子1.严格来讲,这个例子应该叫自执行函数的应用,跟闭包关系不太大,真正用到闭包的是setTimeout里面的这个函数,他访问了外层的参数j(注意当执行的时候j的值是i传递的),所以这个也常用在for循环内,网上例子很多。2.这个就是很常见的闭包使用了,暴露给外界一个接口函数,用来访问内部的n,可以用来模拟私有变量。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答