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

displayName() 内部函数在执行之前从外部函数返回

displayName() 内部函数在执行之前从外部函数返回

交互式爱情 2023-07-06 19:50:07
function makeFunc() {  var name = 'Mozilla';  function displayName() {    alert(name);  }  return displayName;}var myFunc = makeFunc();myFunc();不同(且有趣)的是,displayName() 内部函数在执行之前从外部函数返回。外部函数如何没有被执行?外部函数是 makeFunc(),displayName() 是内部函数。我可以看到正在打印“Mozilla”。这不是意味着先makeFunc执行然后再执行displayName吗?我错过了什么?
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

makeFunc被调用并创建name变量和displayName函数,并返回displayName。当您调用makeFunc它时,它会创建但不执行内部函数。当您调用 时myFuncname内部的变量makeFunc已经消失,但是,由于displayName引用了它,它是一个闭包,它还保存创建闭包时的 frommyFunc的值。name



查看完整回答
反对 回复 2023-07-06
?
呼如林

TA贡献1798条经验 获得超3个赞

当您调用 makeFunc 时,您正在创建一个作用域函数 displayName,它可以访问 name 的当前值。然后 makeFunc 返回这个函数。它不会被执行,它的处理方式与对象类似。您可以传递该函数。或者像在最后一条语句中那样显式执行它。



查看完整回答
反对 回复 2023-07-06
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

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