@yaphets666 闭包无处不在,可能你已经用了很多次而自己都没察觉,比如给 DOM 元素添加事件就是一个典型闭包应用场景
{ let a = 0 document.body.addEventListener('click', () => { a = a + 1 console.log(a) }) }
其实这已经是闭包了,不是在函数里返回函数才叫闭包,是因为 JS 以前只有函数作用域,原谅我上面的回帖考虑不周 出了这个块级作用域,再也不可能拿到变量 a,理应被销毁,但事件回调函数内引用了 a,需要维持环境,所以 a 不会被销毁,点击 body 可以看到 a 在不断+1 非常简单的就创建了一个安全的私有变量,这不比 class 写法爽多了?
asanelder
2021-01-11 22:30:54 +08:00
@walpurgis #41 感谢老铁解惑, 闭包确实是一种轻量级的解决方案. 写 class 总要有那么现实世界有对应之物. 显的很重