发表于: 2016-09-01 00:14:51
2 1767
今天完成的事情:看html5Canvas(没看多少就跑偏开始看闭包了。。。。),看闭包,了解立即执行函数(function(){…})()
明天计划的事情:看html5Canvas
遇到的问题:(遇到什么困难,怎么解决的)
收获:
var add = (function () {
var counter = 0;
return function () {
return counter += 1;}
})();
console.log(add);
add();//1
add();//2
add();//3
最开始的时候看闭包不理解为什么定义add的时候要加(),也不明白为什么当执行add()的时候会从第4行开始执行
今天翻了翻http://www.jb51.net/article/50967.htm 这篇文章明白了
如果没有括号的话程序
var add = function () {
var counter = 0;
return function () {
return counter += 1;}
};
console.log(add);
add();//1
add();//2
add();//3
,在第一行赋给add的是
function () {
var counter = 0;
return function () {
return counter += 1;}
};
这样在调用add()的时候会重新定义counter为0,该计数器程序789行的结果都是0
而按
var add = (function () {
var counter = 0;
return function () {
return counter += 1;}
})();
console.log(add);
add();//1
add();//2
add();//3
这样写的话执行var add赋值的话function会首先执行一次,这样赋值给add的是return的函数
function () {
return counter += 1;}
}
这样每次执行add()都只会执行函数中的counter += 1;
评论