ECMA-262 版本 4 符合性

为了更加严格地遵从 ECMA-262 版本 4 建议,在 Flash Player 7 中进行了几项更改(请参见 www.mozilla.org/js/language/es4/index.html)。除了动作脚本 2.0 中提供的基于类的编程技术(请参见新的面向对象编程模型)之外,还增加了其它一些功能并更改了某些行为。此外,在以 Flash Player 7 为目标播放器进行发布和使用动作脚本 2.0 时,您可以将一种对象类型转换为另一种对象类型。有关更多信息,请参见转换对象。这些功能不要求更新现有脚本;但是,如果要将脚本发布到 Flash Player 7,然后继续对脚本进行修改和改进,则可能会需要使用这些功能。

与上文中提到的更改不同,下表中列出的更改(某些更改也可以提高 ECMA 符合性)可能会导致现有脚本表现出与以前不同的行为。如果在要发布到 Flash Player 7 的现有脚本中使用了这些功能,请检查这些更改,以确保代码仍会按照预期的方式工作,或者确定是否需要改写代码。需要特别注意的是,因为在某些情况下对 undefined 的计算结果是不同的,所以您应该初始化脚本中移植到 Flash Player 7 的所有变量。

以Flash Player 7 为目标播放器发布的SWF 文件

以早期 Flash Player 版本为目标播放器发布的 SWF 文件

支持区分大小写(仅大小写不同的变量名被解释为不同的变量)。这一更改还会影响使用 #include 加载的文件和使用 LoadVars.load() 加载的外部变量。有关更多信息,请参见区分大小写

不支持区分大小写(仅大小写不同的变量名被解释为相同的变量)。

在数值上下文中求 undefined 的值,将返回 NaN

myCount +=1; trace(myCount); // NaN

在数值上下文中求 undefined 的值,将返回 0。

myCount +=1;

trace(myCount); // 1

undefined 转换为字符串时,结果为 undefined

firstname = "Joan "; lastname = "Flender"; trace(firstname + middlename + lastname); // Joan undefinedFlender

undefined 转换为字符串时,结果为 ""(一个空字符串)。

firstname = "Joan "; lastname = "Flender"; trace(firstname + middlename + lastname); // Joan Flender

将字符串转换为布尔值时,如果字符串的长度大于零,结果为 true;如果是空字符串,则结果为 false

将字符串转换为布尔值时,首先会将字符串转换为数字;如果数字为非零,结果为 true,否则结果为 false

在设置数组的长度时,只有有效的数字字符串才设置该长度。例如,"6" 正确,而 " 6" 或 "6xyz" 不正确。

my_array=new Array(); my_array[" 6"] ="x"; trace(my_array.length); // 0 my_array["6xyz"] ="x"; trace(my_array.length); // 0 my_array["6"] ="x"; trace(my_array.length); // 7

在设置数组的长度时,即使是格式错误的数字字符串也能设置长度:

my_array=new Array(); my_array[" 6"] ="x"; trace(my_array.length); // 7 my_array["6xyz"] ="x"; trace(my_array.length); // 7 my_array["6"] ="x"; trace(my_array.length); // 7