经常看到闭包这个词,尤其是一些面试题,因为一知半解的面试官很喜欢问。但是我更加关心的是闭包到底有什么作用?好处或是劣势
闭包正经的教程在这里:https://developer.mozilla.org...
简单来说,闭包就是一个函数及其运行要素的小集合。如果没有闭包,那么函数和执行要素不关联,那么函数运行只能使用形参
function makeFunc() {
var name = 'Mozilla';
function displayName() {
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
myFunc();
就只能写成
function makeFunc() {
function displayName(name) {
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
myFunc('Mozilla');
高阶函数就没法存在了,函数编程的优势全都没了
还有一种高频出镜的面试题涉及的概念是——防抖和节流。
你搜一搜防抖和节流,我可以说前十页的内容百分之百都是用的函数式写法,而不是天生为状态而生的面向对象写法。
函数式写法,再加上防抖和节流需要状态,此时“闭包”就难免。否则就得用全局变量——这是不能入面试官法眼的,好歹你用个类包装也行。
这就是对闭包特性的最广泛的利用方式了。
还可以参考本人在本站写的另一篇让人越看越乱、但在本人眼中是真正懂得闭包特性的人才看得懂的、可以噎死许多半桶水的博客作者的回答
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
感谢各位的回答,经过对大家回答的研究,加上我自己查阅了一些资料,对这个问题做了一个总结 写在这里了 JavaScript闭包。