为了账号安全,请及时绑定邮箱和手机立即绑定

请教各位一个问题,求解答:获取函数内部变量,为什么一定要闭包?跪求!

请教各位一个问题,求解答:获取函数内部变量,为什么一定要闭包?跪求!

Qyouu 2019-07-27 09:27:35
JavaScript为什么不直接将函数的内部变量return出来,而是要通过闭包的方式来实现获取内部变量?看到有人说防止函数内部变量被修改,有点不理解。
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

其实这个跟JS没有私有变量有关
在函数里,如果直接return,比如说
functionfun1(){
varaccount={
name:'张吉林',
password:'123456'
}
//...(一些操作)
returnaccount
}
如果是这种形式,那么我们可以直接通过以下方式获取你的账号,甚至于修改你的账号
varaccount=fun1()//=>{name:"张吉林",password:"123456"}
account.password='abcdef'//=>{name:"张吉林",password:"abcdef"}
因为JS没有私有变量,所以我们只能通过闭包的方式,将账户这种不想暴露出去的信息限制在函数里
functionfun2(){
varaccount={
name:'张吉林',
password:'123456'
}
//...(一些操作)
return{
get(){
returnaccount
}
set(){
//比如说这里做一些官方的验证操作,保证账号设置不是非法操作
//...
}
}
}
如果通过这种形式,那么就将account这个账号信息限制在fun2函数里才能去做的操作
这里只是举个账号的例子,然后类似的还有很多,闭包可以将不想暴露出去的信息限制起来,防止外界调用。实际上,也会有这种情况。比如甲方提供给乙方的API,就只需要暴露出甲想提供的东西,对于他们内部使用的一些信息都可以有效的保护起来。
                            
查看完整回答
反对 回复 2019-07-27
  • 2 回答
  • 0 关注
  • 383 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信