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

关于javascript的闭包

关于javascript的闭包

慕娘9325324 2019-02-26 17:22:49
function returnfunc (propertyName) {  return function (obj) {//-----这行定义并返回了一个闭包,也被称之为一个匿名函数    return obj[propertyName];         };}var savefunc = returnfunc("name");     //调用returnfunc()var result = savefunc({name:"Picasso"});//调用savefunc()alert(result);                        //返回字符串“Picasso”这段代码看了很久了,但是完全一头雾水。为什么最后输出了Picasso为什么可以把{name:"Picasso"}作为savefunc的参数呢,savefunc不是应该等于obj[propertyName]吗?求大牛解答,js好复杂啊。__感谢大家的回答,非常感谢。不过只能采纳一个,抱歉了。
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

理解这个并不需要知道闭包,并且我建议你在js还不太熟悉的情况下,更不用去知道什么是闭包,这样只会增加学习成本

<------分割线------>

1.returnfunc 这个函数接返回值也是一个函数,所以在执行var savefunc = returnfunc("name");之后。现在的


savefunc = function(obj){

   return obj["name"];

}

2.savefunc现在是一个函数,他又接收了一个参数{name:"Picasso"},这个参数是一个对象,他不但可以是这种格式的对象,也可以是一段函数(因为函数也是对象),我这样说,你可能更晕。。。简单说,函数传参的形式不限于字符串)。

于是就变成了


 result = function({name:"Picasso"}){

       return {name:"Picasso"}["name"];

    }

此时返回{name:"Picasso"}["name"]。 name作为对象的key,找到了,此对象的值Picasso。


查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 287 浏览
慕课专栏
更多

添加回答

举报

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