求教大神,关于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();运行后,执行结果为什么不一样

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

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

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