关于闭包的问题大佬们有什么好的建议?

functiontest(){
letname='init';
functiongetName(){
returnname;
}
functionsetName(newName){
name=newName;
}
return{
getName:getName,
setName:setName,
name:name
}
}
lett1=test();
t1.setName('liujiapeng')
console.log(t1.getName())//liujiapeng
console.log(t1.name);//init
为什么t1.name不能打印出修改后的值呢,我的理解是因为有闭包,因此t1创建的test上下文没有弹出,get和set函数中的name都是该上下文中的name。那为啥直接把name返回出去获取不到最新的值咧。
小白上路,望大神指导~
函数式编程
浏览 280回答 2
2回答

SMILET

闭包是一个函数,它hold住了外层函数作用域的变量。这样只要你引用了这个函数,那他hold的变量就会延迟释放。你这返回的是个对象,不能算闭包。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript