1

我听说每次参数传入/传出函数时,AS框和取消框值。

A.因此,这会更快吗?

var val = doWork(50,"hello", 2048);

function doWork (param1,param2,param3){
   t.text = param2;
   return param1+param3;
}

B.还是这个?

var val:Number = doWork(50,"hello", 2048);

function doWork (param1:Number,param2:String,param3:Number):Number{
   t.text = param2;
   return param1+param3;
}
4

2 回答 2

3

运行时没有区别。AS 2 由不支持静态类型的 Actionscript 虚拟机 1 (AVM1) 运行,因此类型信息是编译器的提示,可帮助您更早地捕获类型不一致。但是带有或不带有类型注释的相同代码会产生相同的字节码。

AS 3 由支持动态和静态类型的 AVM2 运行,因此在代码中声明类型消除了一些运行时查找,从而使其执行速度更快。

于 2009-01-17T16:58:22.130 回答
0

在性能方面,您总是会比省略它们更好地声明类型,因此在您的情况下,仅出于这个原因,B 就是更好的答案。不使用(暗示)对象也更好。

关于 ActionScript 如何进行装箱和拆箱的信息几乎没有那么多(与 C# 和 Java 相比),但 AS3 文档确实解决了一些问题(请参阅数据类型):

http://livedocs.adobe.com/flex/3/html/help.html?content=03_Language_and_Syntax_01.html

不过,一般来说,最好避免运行时类型检查并使用文档中定义的 AS3 的“原语”(Boolean、Number、int、uint、String)。祝你好运!

于 2009-01-17T16:47:42.680 回答