猿问

闭包函数的一个简单测试疑惑

var uniqueInterger = (function(){

                var counter = 0;

                return function(){

                    return counter++;

                };

            }());  

            console.log(uniqueInterger());

这里返回值是0,为什么不是1呢?


沧海一幻觉
浏览 949回答 2
2回答

江户川乱折腾

这里不是闭包的问题,而是counter++和++counter的区别的问题counter++是先使用counter值,然后再自增,也就是说在执行函数时,先输出counter为0,然后counter自增变成1。如果你将counter++改成++counter就会成功的输出1,因为是先counter自增变成1之后,再输出该值
随时随地看视频慕课网APP
我要回答