for(const i)而不是(var i)

时间:2015-01-22 09:34:02

标签: actionscript-3 for-loop compiler-errors const var

虽然智能代码完成似乎没有得到它(至少在Flash Builder中),但编译器似乎确实允许它,并且为 定义更具有bug保护性。 em> 迭代器变量作为常量。

        for (const i:int = 0; i < 100; ++i) {
            i = 5; // this breaks the loop's logic, but is caught by the compiler
        }

1 个答案:

答案 0 :(得分:1)

您无法更改const的值,const指的是Constants的编程概念,这些属性永远不会改变。您无法增加const,只能分配一次const。在那之后,它被固定直到它被处理掉。 const作为for循环中的计数器是一个糟糕的选择,因为您无法更改它的值。您可以详细了解const here的操作脚本实现。

根据这个document,遗留编译器中存在一个允许增量运算符在const上运行的错误,如果此代码有效,则应该在Actionscript Complier 2.0中解决此错误,很可能解释是你正在使用遗留编译器。

如果您使用ASC 2.0或更高版本,我可以告诉您这种行为与Actionscript 3 language rules相矛盾,您不应该依赖它。它很可能是一个可以在Adobe的心血来潮中修复的错误。