发表于: 2016-09-01 00:14:51

2 1768


今天完成的事情:看html5Canvas(没看多少就跑偏开始看闭包了。。。。),看闭包,了解立即执行函数(function(){…})()

明天计划的事情:看html5Canvas

遇到的问题:(遇到什么困难,怎么解决的)

收获:

  1. var add = (function () {
  2.    var counter = 0;
  3.    return function () {  
  4.        return counter += 1;}
  5. })();
  6. console.log(add);
  7. add();//1
  8. add();//2
  9. add();//3
最开始的时候看闭包不理解为什么定义add的时候要加(),也不明白为什么当执行add()的时候会从第4行开始执行
今天翻了翻http://www.jb51.net/article/50967.htm 这篇文章明白了
如果没有括号的话程序
  1. var add = function () {
  2.    var counter = 0;
  3.    return function () {  
  4.        return counter += 1;}
  5. };
  6. console.log(add);
  7. add();//1
  8. add();//2
  9. add();//3
,在第一行赋给add的是
  1. function () {
  2.    var counter = 0;
  3.    return function () {  
  4.        return counter += 1;}
  5. };
这样在调用add()的时候会重新定义counter为0,该计数器程序789行的结果都是0
而按
  1. var add = (function () {
  2.    var counter = 0;
  3.    return function () {  
  4.        return counter += 1;}
  5. })();
  6. console.log(add);
  7. add();//1
  8. add();//2
  9. add();//3
这样写的话执行var add赋值的话function会首先执行一次,这样赋值给add的是return的函数
  1. function () {  
  2.        return counter += 1;}
  3. }
这样每次执行add()都只会执行函数中的counter += 1;




返回列表 返回列表
评论

    分享到