如题
既然let和const解决了块级作用域的问题,() => {}解决了this的指向问题,那之前es5中的闭包在es6中还有什么实际的使用场景吗
还请大家指教
v1.1搞混了ts和es。。所以关于public和private关键字的问题请大家忽视。。。
如题
既然let和const解决了块级作用域的问题,() => {}解决了this的指向问题,那之前es5中的闭包在es6中还有什么实际的使用场景吗
还请大家指教
v1.1搞混了ts和es。。所以关于public和private关键字的问题请大家忽视。。。
还是需要吧,比如这种函数柯里化的:
var func = function(){
var num = 1;
return function(){
alert(num);
}
}
通过箭头函数,解决this指向问题,并不是万能的。
比如构造函数、需要结合动态上下文的回调(绑定一个click事件)、在对象上定义方法等等。
当遇到这些情况时,还是得用回传统的function
,或者es6的短语法()
。
这时如果碰到作用域问题,还是得用到闭包。
"JavaScript中闭包无处不在,你只需要能够识别并拥抱它。"
"最后你恍然大悟:原来在我的代码中已经到处都是闭包了,现在我终于能理解他们了。
"理解闭包就好像Neo第一次见到矩阵一样。"
《You Don't Know Javascript》中如是写道。
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
闭包与两个特性有关,一是嵌套作用域,另一个是函数当值传递(first-class function),前者能让作用域内部访问外部变量,后者是函数式编程的前提。两者使得 JavaScript 非常灵活,除非你打算把 ES6 当作静态语言来编写,否则你总会用到闭包的。