鱼C论坛

 找回密码
 立即注册
查看: 4399|回复: 3

[已解决]JS阮一峰闭包讲解的问题

[复制链接]
发表于 2021-11-15 21:45:15 | 显示全部楼层 |阅读模式
10鱼币

var name = "The Window";
                 var object = {
                   name : "My Object",
                   getNameFunc : function(){
                     return function(){
                     return this.name;
                                          };
                                        }
                                };
                                console.log("没有定义全局变量的",object.getNameFunc()());//The Window  
                                // 在执行时this属于全局域,因此结果是the window

这里的getNameFunc()()里的是什么意思?有谁能讲解一下吗?
最佳答案
2021-11-15 21:45:16
getNameFunc这是一个函数,因为无参数,所以用空括号表示调用,因为它的返回值也是一个函数,并无参数,所以再加一对空括号表示调用

最佳答案

查看完整内容

getNameFunc这是一个函数,因为无参数,所以用空括号表示调用,因为它的返回值也是一个函数,并无参数,所以再加一对空括号表示调用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-15 21:45:16 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
getNameFunc这是一个函数,因为无参数,所以用空括号表示调用,因为它的返回值也是一个函数,并无参数,所以再加一对空括号表示调用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-19 00:52:51 | 显示全部楼层
本帖最后由 小仙 于 2021-11-19 01:13 编辑

这道题应该属于this指向问题。this的指向只与函数被调用的位置有关系。应为object.getNameFunc()()可以看成const getName = object.getNameFunv(); getName()。这里的this指向window是因为该函数在全局作用域下被调用,属于默认绑定到window对象,这里this指向window是建立在非严格模式下,严格模式下会指向undefined。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-19 17:29:32 | 显示全部楼层
小仙 发表于 2021-11-19 00:52
这道题应该属于this指向问题。this的指向只与函数被调用的位置有关系。应为object.getNameFunc()()可以看成 ...

thankyou
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 05:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表