OCATASHA
2020-12-30T15:57:37+00:00
[img]https://img.nga.178.com/attachments/mon_202101/03/-7Q5-jcmhKlToS8s-d0.jpg.medium.jpg[/img]答案我肯定是知道的,(打印不就行了)但是解题思路还是没完全想通。目前思路是。 代码运行第一部,执行自调用函数。然后修改window.x数值一次。然后将return出去的函数赋值给fn函数 然后,这里有第一个疑问。下面调用的fn函数运行的是上面函数return出来的里层函数我能理解。那obj.fn为什么运行的也是里层函数。 然后第二个疑问,一共三次函数运行,为什么函数内部参数x(不是window.x也不是obj.x是函数接收进来的参数x)一直延续在用的,就不是函数运行完会清空的吗,释放内存的吗,这个为啥没被清空。[s:a2:大哭][s:a2:大哭][s:a2:大哭]
[quote][tid=24955338]Topic[/tid] Post by [uid=26309359]时尚旅行箱[/uid] (2021-01-03 23:58):
[img]https://img.nga.178.com/attachments/mon_202101/03/-7Q5-jcmhKlToS8s-d0.jpg.medium.jpg[/img]答案我肯定是知道的,(打印不就行了)但是解题思路还是没完全想通。目前思路是。 代码运行第一部,执行自调用函数。然后修改window.x数值一次。然后将return出去的函数赋值给fn函数 然后,这里有第一个疑问。下面调用的fn函数运行的是上面函数return出来的里层函数我能理解。那obj.fn为什么运行的也是里层函数。 然后第二个疑问,一共三次函数运行,为什么函数[/quote]没人吗。大佬都睡了吗[s:ac:哭1][s:ac:哭1][s:ac:哭1]
第一个问题是 立即执行函数已经把内部函数赋值给了obj.fn成了函数表达式,然后把引用付给了fn,现在fn和obj.fn是一个东西。
第二个问题是闭包获取上下文的特性,闭包没销毁自然引用还在,肯定不会释放。
我不是主搞前端的,但应该差不多这样子