请解释这个Javascript关闭练习

这个问题在这里已经有了答案:

  • JavaScript关闭如何工作? 88个答案

  • 为了理解这个,你必须知道函数调用和函数引用之间有什么区别。 以及范围如何在JavaScript中工作。

    假设你知道这些事情,让我们来解释一下。

    所以你首先有一个hidden的变量,被赋予一个mystery(3)的值mystery(3) 。 所以立即看看函数的mystery ,看看它返回的结果。 它返回一个内部函数mystery2引用 。 所以现在hidden了一个引用 ,这意味着它没有实际的数值。 以下你有第二个变量声明var jumble = mystery3(hidden); 。 现在为了知道jumble是什么,你需要看看函数mystery3和它返回的值。 它再次返回一个内部函数mystery4的引用。 所以,现在你所包含的两个变量包含对封闭mysterymystery内部函数的mystery3

    现在让我们看看var result = jumble(2) 。 执行jumble(2)是一个实际的函数调用,该函数是jumble引用的函数,它是mystery4 。 当mystery4运行你看到它需要一个参数bonus ,这将是2从线给出var result = jumble(2) 它返回param(6) + bonusbonus2 ,好的,但param(6)什么? 这是给jumble的价值: hidden ,这是对mystery2的参考,请记住? 所以运行param(6)将使用参数6执行mystery2

    所以,追溯这些函数可能会导致一些混淆,但是让我们按照实际值进行操作,以使其更清晰一些(如果这只是一个字)。

    执行var result = jumble(2)会给我们一个param(6) + 2的返回值来得到param(6)我们进入mystery2 multiplier = 6 ,在那里我们设置multiplier = 6 * input 。 我们的输入等于3+2=5 ,所以multiplier变成6*5=30并且作为返回值,我们乘以4 ,这是我们的var secret 。 在mystery2的执行结束时,我们的值为120 ,这个值在mystery4返回给我们的param(6) 。 如果你还记得,我们的bonus2120+2=122瞧!

    我觉得我没有很好地解释这个问题,但这可能是我能做的最好的。 希望有所帮助!

    链接地址: http://www.djcxy.com/p/1479.html

    上一篇: Please explain this Javascript closure exercise

    下一篇: Confused by closures in JavaScript