最新回答 / superboo
apply用法为:func.apply( this,[var1,var2,var3]);func为函数this为作用域。当为null时为当前作用域.[va1,var2,var3...]为func所需要的参数。你理解的 差不多。。就是在this的作用域上调用apply 而所需参数为传入的数组。总体意思就是 我可以再任何对象上调用一个 不属于我的方法。但是以我为作用域。
2015-06-20
总结下:
1、先声明(参数先声明,函数声明(发生冲突覆盖),变量声明(冲突忽略));
2、后执行(不考虑函数声明)
1、先声明(参数先声明,函数声明(发生冲突覆盖),变量声明(冲突忽略));
2、后执行(不考虑函数声明)
2015-06-19
回复 @夜城飞雪 :你这里有两个错误;
1、JavaScript里没有块级作用域,所以,你在for循环里定义的i变量(var i)相当于是全局变量,并且,你第二次声明并初始化了i(var i),貌似会被忽略(不确定,只确定第二次声明该变量会被忽略);
2、闭包里并没有i变量,它的i变量来自于对全局变量对象中的i变量引用(通过作用域链),如果全局变量对象中的i变量变化,那么闭包里的i变量必然变化(相反,如果,闭包里的i变量变化(这相当于它自己有和一个i变量),但是全局变量对象中的i变量不会变化)。还有就是,这几个匿名函数(闭包),不是一个,只是作用域链都指向全局变量对象。
1、JavaScript里没有块级作用域,所以,你在for循环里定义的i变量(var i)相当于是全局变量,并且,你第二次声明并初始化了i(var i),貌似会被忽略(不确定,只确定第二次声明该变量会被忽略);
2、闭包里并没有i变量,它的i变量来自于对全局变量对象中的i变量引用(通过作用域链),如果全局变量对象中的i变量变化,那么闭包里的i变量必然变化(相反,如果,闭包里的i变量变化(这相当于它自己有和一个i变量),但是全局变量对象中的i变量不会变化)。还有就是,这几个匿名函数(闭包),不是一个,只是作用域链都指向全局变量对象。
2015-06-18