发表于: 2016-03-30 07:02:38
1 3309
今天完成的事情:
1、完成task2;
2、task3只写了页面,JS还没开始,打算先把W3C上的JQ刷完再开始写,目前看了一半;
明天计划的事情:
1、看完JQ,继续task3;
遇到的问题:
1、Q:task1老大先前评论说除非是常量,不要用全局变量,今天无意中听@张浩 念叨着什么污染全局,一时兴起百度了下全局变量的使用
A:事实是,全局变量不可多用,也不是不能用。
全局变量,会造成模块之间的耦合度太高,不利于模块化;
因为全局变量,你改我改大家都可以修改,程序逻辑不容易理顺,用得太多的话,调试改错,都不容易。
但是好处是,不再需要在函数里,传递参数了,简便快捷,
而且不会出现引用临时变量的错误
不过由于全局变量,程序运行期间,始终占有那块存储区,所以空间利用率比较低,大量的全局变量;
很快就会把内存用光,所以要少用全局变量。
局部自动变量和函数参数占用的空间,会反复利用,空间利用率比较高,所以鼓励使用参数传递,不鼓励使用全局变量。
另外,利用参数传递的程序,调试也比较方便,全局变量由于每个函数都可以使用,所以任何一个函数的修改,如果修改了全局变量,都有可能影响到其他函数,所以不利于调试,这是不鼓励使用全局变量的另一个原因。
基本上全局变量,的使用原则是:
1)能不用就不用;
2)该用还是要用;
3)尽量少用!
全局变量不需要,谈虎色变,也不能到处都用。
2、Q:看了上面这个帖子,于是我跑去把task1外面的全局变量都移到函数里面,然后问题就来了,变色后的格子颜色不能初始化了
A:请教了@苏哈哈 9神后,恍然大悟,lastone放进函数里的话,每次调用就是一个新的值 ,新的lastone没有记录上一次函数结尾那里的赋值,9神还给了一个把lastone作为局部变量的版本,我放到自己js代码后面的注释里了,现在还不能完全理解,先mark,以后再看
3、Q:刚刚把task1的问题弄清楚,task2又遇到类似问题,这次是觉得用户输入的人数,算是一个常量,于是想把它从局部变量移到全局变量中,结果获取不到用户输入的值......orz
A:问了几个师兄,都说不清楚为什么,于是再去麻烦9神,其实就是一个加载顺序的问题,JS先跑了一次然后把值保存到变量了,此时用户再输入,关联的函数中如果没有获取的动作,那值就不会更新,这个应该是涉及到浏览器渲染html、CSS和JS的工作原理,其实先前看过一个关于浏览器内部工作原理的长贴子,但是当时很多东西没完全理解,有必要再去过一遍
http://kb.cnblogs.com/page/129756/
3、Q:task2当设定人数比较多时,显示列表高度不够,
A:CSS3 overflow-y 属性
http://www.w3school.com.cn/cssref/pr_overflow-y.asp
收获:
1、对JQ有了初步了解,“写的更少,但做的更多”的轻量级 JavaScript 库
http://www.w3school.com.cn/jquery/jquery_install.asp
感想:
感谢9神~
评论