大多数JavaScript代码也是语法上有效的ActionScript 3.0代码。但是,有一些例外情况会引起我的疑问:
JavaScript中哪些构造/功能在语法上无效?请提供具有 NOT 有效ActionScript 3.0代码的JavaScript代码(基本JavaScript代码,无 DOM API用法)的具体示例。
答案 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中您根本没有类)。