2010-11-09 67 views
2

我应该在循环之前声明_mcContainer var还是不应该? (性能提升?)在AS3中循环或之前声明变量?

for(var i:uint = _startIndex; i <= _endIndex; ++i){  
    var _mcContainer:MovieClip = _mcParent["i_" + _position]; 
} 

var _mcContainer:MovieClip; 
for(var i:uint = _startIndex; i <= _endIndex; ++i){ 
    _mcContainer = _mcParent["i_" + _position]; 
} 

+0

第二种选择更快,看看这个:http://www.rozengain.com/blog/2007/05/01/some-actionscript-30-optimizations/ – 2010-11-09 17:05:19

+0

@george,哪一部分页面涉及到这个问题?我无法找到任何东西。 – spender 2010-11-09 17:09:32

+0

@spender“我们还可以通过将数组的长度存储在循环外部的变量中来加速循环”之前“来自其他类的常量”...你是正确的...不是在明显的视野 – 2010-11-09 23:55:44

回答

6

不难测试...

...不过根据文档,它不应该有任何区别,因为变量声明提升到方法块顶部反正。

the docs

缺乏的块级范围内的一个有趣的含义是,你可以阅读或它宣告前,只要在函数结束之前宣布写入到一个变量。这是因为一种称为提升的技术,这意味着编译器会将所有变量声明移动到函数的顶部。

+1

好点。当我在AS3进行开发时,这已经让我多次陷入困境。其他编译器如C++(甚至是Java)会在声明为编译时错误之前识别使用变量。 – 2010-11-09 17:09:53

+0

从Flex编码约定:http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions#CodingConventions-Variables我认为我只需要声明变量,然后才能使用它们,这会提高性能,但感谢您的文档参考,我认为它没有。 :] 谢谢! – Rihards 2010-11-09 22:55:01

+0

使用变量后声明变量会降低代码的易读性,在我看来。它们应该在使用之前进行声明 - 最糟糕的情况是在同一行中。但不晚。 – Ixx 2012-02-28 22:41:36