据我所知,在范围可能发生变化this
的回调中使用分配给变量。this
但是通过挖掘 ExtJS 源代码,我发现它用于各种功能,但并非总是如此。那么有什么理由我会分配this
给作用域下的局部变量,或者 ExtJS 源代码只是在与不同的开发人员风格作斗争?
问问题
84 次
3 回答
3
@kevhender 向我指出了正确的 sencha论坛帖子,其中 evan 给出了很好的解释。
这只是为了大小。这是一个例子:
function doA() {
var me = this;
me.a();
me.b();
me.c();
me.d();
me.e();
me.f();
me.g();
me.h();
me.i();
me.j();
me.k();
me.l();
}
function doB() {
this.a();
this.b();
this.c();
this.d();
this.e();
this.f();
this.g();
this.h();
this.i();
this.j();
this.k();
this.l();
}
压缩后我们得到:
function doA(){var a=this;a.a();a.b();a.c();a.d();a.e();a.f();a.g();a.h();a.i();a.j();a.k();a.l()}
function doB(){this.a();this.b();this.c();this.d();this.e();this.f();this.g();this.h();this.i();this.j();this.k();this.l()};
它加起来。
据此我们应该
如果我们只使用它最多 3 次,则不要使用本地 var
function doA(){var a=this;a.a();a.b();a.c();}; function doB(){this.a();this.b();this.c();};
如果我们更频繁地使用它然后使用它,然后使用它三次
function doA(){var a=this;a.a();a.b();a.c();a.d()}; function doB(){this.a();this.b();this.c();this.d()};
于 2013-07-22T13:56:08.347 回答
2
这有几个原因,最重要的是使用局部变量将在压缩文件期间节省一些字节。一小段代码可能看起来不多,但随着时间的推移它可以加起来很多。
Sencha 论坛上有一个很长的帖子讨论这个问题:http ://www.sencha.com/forum/showthread.php?132045 。
于 2013-07-22T13:33:37.717 回答
0
正如您正确指出this
的那样,有时会在范围可能发生变化的地方使用。
在某些情况下,您希望这样做以确保没有范围界定问题。
除此之外,开发人员有时只是this
出于习惯而不是出于必要而分配给变量。
于 2013-07-22T13:31:56.173 回答