有效的JavaScript代码是无效的ActionScript 3.0代码?

时间:2010-03-12 00:26:34

标签: javascript flex flash actionscript-3 actionscript

大多数JavaScript代码也是语法上有效的ActionScript 3.0代码。但是,有一些例外情况会引起我的疑问:

JavaScript中哪些构造/功能在语法上无效?请提供具有 NOT 有效ActionScript 3.0代码的JavaScript代码(基本JavaScript代码,无 DOM API用法)的具体示例。

6 个答案:

答案 0 :(得分:8)

您可以在不使用var语句的情况下在JS中声明变量。在ActionScript 3中,var语句为always required

以下是有效的JS但会在AS3中抛出编译器错误:

var foo = 6;
bar = "bar";

您还可以在单​​个范围JS中重新声明变量而不会出现错误:

var x = 5;
var x;

在AS3中,您只能为每个范围声明一次变量

答案 1 :(得分:6)

显而易见的是ECMAScript 4关键字,这些关键字在ECMAScript 262第3版中不是未来的保留字:

// oops!
var let   = "Hello";
var yield = "World";

答案 2 :(得分:4)

AS3是一种比javascript(和AS2)更强大的传统OO语言,所以原型的所有操作都已经完成。这可能是最大的区别,IMO,因为它意味着像jQuery这样的东西在AS3中无法真正起作用。

正如所指出的,必须用var声明当地人。此外,无类型变量和重新声明的变量会生成编译器警告。

您通常会发现有更多相反的示例(AS3代码在javascript中无效)。

答案 3 :(得分:2)

Actionscript 1更接近Javascript。 Actionscript 3遵循现已解散的ECMAScript 4规范。

答案 4 :(得分:2)

首先, eval()方法不起作用。

此外,RegExp()构造函数似乎不起作用,至少不使用字符串。换句话说,你不能说:

var rex:RegExp = new RegExp("[a-zA-Z0-9]+","gim");

你必须这样写:

var rex:RegExp = new RegExp(/[a-zA-Z0-9]+/gim);

换句话说,你不能对字符串参数的部分进行变量替换。

答案 5 :(得分:2)

好吧,你不能使用alert(和其他一些JS全局函数),onmouseover,onload等(JS事件处理程序),任何与表单相关或与浏览器相关的东西(如你所知)。您无法在AS3类中复制和粘贴JS代码,因为AS3是强类型的,您可能会遇到编译器错误(此外,在JS中您根本没有类)。