js基础:在一个事件处理器(click)会形成一个闭包,可以访问外层的变量。形成了一个闭包。
故原则上所有的外层变量都可以被访问到,但是今天调试最新版本的chrome时候,发现 当事件回调里面没有使用某一个变量时,会直接被销毁。这样的话可以优化内存。
触发事件时的断点:
[img]http://dl2.iteye.com/upload/attachment/0122/3841/aaf86162-14a7-3981-ba0e-9b6e22ef8aad.png[/img]
闭包
[img]http://dl2.iteye.com/upload/attachment/0122/3839/9ef7873d-852a-3cc6-8ce3-4b7275592cdf.png[/img]
此时该作用域应该可以访问到外面的start_pos变量,但是事实上没有。说明chrome进行了优化。
当在内部加上start_pos访问时,可以看见可以访问到,该变量没有被销毁。
如下图所示:
[img]http://dl2.iteye.com/upload/attachment/0122/3843/5e48b806-0a39-34c3-b863-6d354b5a98e9.png[/img]
故原则上所有的外层变量都可以被访问到,但是今天调试最新版本的chrome时候,发现 当事件回调里面没有使用某一个变量时,会直接被销毁。这样的话可以优化内存。
触发事件时的断点:
[img]http://dl2.iteye.com/upload/attachment/0122/3841/aaf86162-14a7-3981-ba0e-9b6e22ef8aad.png[/img]
闭包
[img]http://dl2.iteye.com/upload/attachment/0122/3839/9ef7873d-852a-3cc6-8ce3-4b7275592cdf.png[/img]
此时该作用域应该可以访问到外面的start_pos变量,但是事实上没有。说明chrome进行了优化。
当在内部加上start_pos访问时,可以看见可以访问到,该变量没有被销毁。
如下图所示:
[img]http://dl2.iteye.com/upload/attachment/0122/3843/5e48b806-0a39-34c3-b863-6d354b5a98e9.png[/img]