最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

javascript中闭包(Closure)详解_javascript技巧

来源:懂视网 责编:小采 时间:2020-11-27 21:48:19
文档

javascript中闭包(Closure)详解_javascript技巧

javascript中闭包(Closure)详解_javascript技巧:在javascript中,函数可看作是一种数据,可以赋值给变量,可以嵌套在另一个函数中。 var fun = function(){ console.log(平底斜); } function fun(){ var n=10; function son(){ n++; } son(); console.lo
推荐度:
导读javascript中闭包(Closure)详解_javascript技巧:在javascript中,函数可看作是一种数据,可以赋值给变量,可以嵌套在另一个函数中。 var fun = function(){ console.log(平底斜); } function fun(){ var n=10; function son(){ n++; } son(); console.lo

在javascript中,函数可看作是一种数据,可以赋值给变量,可以嵌套在另一个函数中。

我们把上面第二段代码稍微修改下:

看出差别了吗,如果理解不了代码执行结果,请看上一篇博文,关于javascript作用域和作用域链的讲解。

上面这段代码中变量n是全局变量,随时可能被重新赋值,而无需通过fun函数的调用。为了让变量n不受污染,或者说是减少全局变量的污染,我们需要把n放到函数中作为局部变量。

如果我们可以在全局中直接调用son函数,那么便可以达成想要的效果。son函数现在是作为局部变量存在,要想在全局中访问,一般有两种方法:

一种是赋值给全局变量

另一种是使用return返回值

上面的son()函数就是闭包,某种意义上所有函数都可以看作闭包。闭包就是可以访问外层函数作用域的变量的函数。

还是上面那段代码,我们稍微修改下,再看看执行结果,这是因为每次执行fun()函数时都会初始化变量n。

闭包的好处是减少全局变量,避免全局污染,可以将局部变量保存在内存中。但这既是优点又是缺点,一段代码中如果闭包过多,有可能造成内存泄露。由于闭包中局部变量不会被垃圾回收机制回收,所以需要手动赋值为null(关于内存泄露,后期单独开专题)

文档

javascript中闭包(Closure)详解_javascript技巧

javascript中闭包(Closure)详解_javascript技巧:在javascript中,函数可看作是一种数据,可以赋值给变量,可以嵌套在另一个函数中。 var fun = function(){ console.log(平底斜); } function fun(){ var n=10; function son(){ n++; } son(); console.lo
推荐度:
标签: js javascript javascri
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top