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,就只需要暴露出甲想提供的东西,对于他们内部使用的一些信息都可以有效的保护起来。
添加回答
举报
0/150
提交
取消