猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
请教各位一个问题,求解答:获取函数内部变量,为什么一定要闭包?跪求!
JavaScript为什么不直接将函数的内部变量return出来,而是要通过闭包的方式来实现获取内部变量?看到有人说防止函数内部变量被修改,有点不理解。
Qyouu
浏览 384
回答 2
2回答
慕桂英546537
其实这个跟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,就只需要暴露出甲想提供的东西,对于他们内部使用的一些信息都可以有效的保护起来。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续