javascript函数详解
在javascript中,函数可看作是一种数据,可以赋值给变量,可以嵌套在另一个函数中。
var fun = function(){ ("平底斜");}
function fun(){ var n=10; function son(){ n++; } son(); (n);}fun(); //11fun(); //11
我们把上面第二段代码稍微修改下:
var n=10;function fun(){ function son(){ n++; } son(); (n);}fun(); //11fun(); //12
看出差别了吗,如果理解不了代码执行结果,请看上一篇博文,关于javascript作用域和作用域链的讲解。
上面这段代码中变量n是全局变量,随时可能被重新赋值,而无需通过fun函数的调用。为了让变量n不受污染,或者说是减少全局变量的.污染,我们需要把n放到函数中作为局部变量。
function fun(){ var n=10; function son(){ n++; (n); } son();}fun(); //11fun(); //11
如果我们可以在全局中直接调用son函数,那么便可以达成想要的效果。son函数现在是作为局部变量存在,要想在全局中访问,一般有两种方法:
一种是赋值给全局变量
var a;function fun(){ var n=10; a = function son(){ n++; (n); }}fun(); //son()a(); //11a(); //12
另一种是使用return返回值
function fun(){ var n=10; return function son(){ n++; (n); }}var a=fun();a(); //11a(); //12
上面的son()函数就是闭包,某种意义上所有函数都可以看作闭包。闭包就是可以访问外层函数作用域的变量的函数。
var a;function fun(){ var n=10; a = function son(){ n++; (n); } return a();}fun(); //11a(); //12a(); //13fun(); //11a(); //12a(); //13
还是上面那段代码,我们稍微修改下,再看看执行结果,这是因为每次执行fun()函数时都会初始化变量n。
闭包的好处是减少全局变量,避免全局污染,可以将局部变量保存在内存中。但这既是优点又是缺点,一段代码中如果闭包过多,有可能造成内存泄露。由于闭包中局部变量不会被垃圾回收机制回收,所以需要手动赋值为null(关于内存泄露,后期单独开专题)
-
插图中计算机技术的应用
下面是本站小编搜索整理的关于插图中计算机技术的应用,欢迎参考阅读,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生培训网!在新时代的发展下,社会已经把技术和艺术完美的融合在一起,在许多方面,两者的结合已经让人无法想象了。计算机技术与艺术的...
-
办公文秘:处理好特别会议
办公文秘遇到特别会议要如何处理呢?所谓特别会议是指那些在规定的时间而定期召开的例行会议之外,由于非常特别的情况而由主管经理临时召开或指派他人临时召开的内部工作性会议,是该部门在管理或商务活动出现特殊情况时,而采取的一种应变措施。特别会议虽然是在应...
-
企业怎么做好网络营销方案
任何策划都要事先做好方案才能够实施,网络营销也不例外。好的网络营销策划方案,包含着对许多细节方面的处理。下面本站小编搜索整理了关于企业做好网络营销方案的方法技巧,欢迎参考阅读,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生培训网!1、...
-
win7提高网速的方法
使用Win7系统的用户电脑使用了一段时间,发现自己的电脑网速不如以前,怎么会差别这么大呢?这是什么问题?win7如何提高网速?下面是小编分享的win7提高网速的方法,一起来看一下吧。win7提高网速的方法一方法一:首先在介绍前建议先查毒和清理系统垃圾;依次打开:开始--运...