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
它时,它会创建但不执行内部函数。当您调用 时myFunc
,name
内部的变量makeFunc
已经消失,但是,由于displayName
引用了它,它是一个闭包,它还保存创建闭包时的 frommyFunc
的值。name
呼如林
TA贡献1798条经验 获得超3个赞
当您调用 makeFunc 时,您正在创建一个作用域函数 displayName,它可以访问 name 的当前值。然后 makeFunc 返回这个函数。它不会被执行,它的处理方式与对象类似。您可以传递该函数。或者像在最后一条语句中那样显式执行它。
添加回答
举报
0/150
提交
取消