匿名函数

1.作用链本质上是一共指向变量对象的指针列表,它只引用但不实际包含变量对象。

2.闭包(有权访问另一函数作用域中的变量的函数,常见的形式就是在一个函数的内部创建另一个函数)会携带包含它的函数的作用域,因此会比其他函数占用更多的内存,建议少用闭包。

3.闭包只能取得包含函数中的任何变量的最后一个值。个人觉得这一点刚好验证了第一点。正因为是引用,所以只会外部函数的变量对象中的最后的值。

4.闭包中的this指的是window,argument是[].要想访问作用域总的argument对象,必须将该对象的引用保存到另一个闭包能够访问的变量中。

5.闭包和匿名函数不是一个概念。

6.闭包中的this通常指的是windows,除非使用apply或call方法改变作用域

View Code
 1 <script type="text/javascript">
 2 var name = "the window";
 3 var obj = {
 4 name : "my obj",
 5 getNameFunc:function(){
 6 return function(){
 7 return this.name;
 8 };
 9 }
10 }
11 alert(obj.getNameFunc().call(obj));
12 </script> 

当然可以在外部函数中将this变量保存在闭包能够访问到的变量,这样闭包就可以访问。

7.javascript可以多次声明同一个变量,后面的声明不起作用,除非改变了变量的值。
8.(function(){})()模仿块级作用域,即私有作用域。使用这种方法,可以限制向全局作用域中添加过多的函数和变量。
也可以减少闭包占用的内存,因为没有指向函数的引用,只要函数执行完毕

posted @ 2012-12-19 16:07  lanse_yan  阅读(165)  评论(0编辑  收藏  举报