ybdt1201
ybdt1201
采纳率85.1%
2016-11-27 10:42 阅读 915

求教大神,关于js 闭包的问题

function w(){
    var c = 8;

    function b() {
        console.log(c);
        c++;
    }
    return b;
}
w()()//8
w()()//8
w()()//8

var d = w();
d()//8
d()//9
d()//10

将w()()拆开成var d = w();d();运行后,执行结果为什么不一样

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    showbo GoCityPass新加坡曼谷通票 2016-11-27 11:56

    w()()这样执行就是每次都执行了c=8【w()】,然后再执行b(),当然是8

    var d=w(),这样是d等于里面的b函数,在执行就是d()每次引用的都是c,直接操作初始化的c=8

    点赞 3 评论 复制链接分享
  • ybdt1201 ybdt1201 2016-11-27 12:40

    针对这个问题,搞清楚了,为此特意写了篇关于闭包的博客,如对上面问题不懂,可看博客:
    http://blog.csdn.net/ybdt1201/article/details/53366613

    点赞 评论 复制链接分享

相关推荐