Действительный код JavaScript, который НЕ является допустимым кодом ActionScript 3.0? - PullRequest
9 голосов
/ 12 марта 2010

Большая часть кода JavaScript также является синтаксически верным кодом ActionScript 3.0. Однако есть некоторые исключения, которые приводят меня к моему вопросу:

Какие конструкции / функции в JavaScript синтаксически недопустимы в ActionScript 3.0? Пожалуйста, предоставьте конкретные примеры кода JavaScript (базовый код JavaScript без использования DOM API), который является НЕ допустимым кодом ActionScript 3.0.

Ответы [ 6 ]

8 голосов
/ 21 марта 2010

Вы можете объявить переменную в JS без использования оператора var. В ActionScript 3 оператор var равен , всегда требуется .

Следующее допустимо для JS, но выдает ошибку компилятора в AS3:

var foo = 6;
bar = "bar";

Вы также можете переопределить переменную в единой области видимости JS без ошибки:

var x = 5;
var x;

В AS3 переменную можно объявить только один раз для каждой области.

6 голосов
/ 12 марта 2010

Очевидными являются ключевые слова ECMAScript 4, которые не были зарезервированы в будущем в ECMAScript 262, 3-е издание:

// oops!
var let   = "Hello";
var yield = "World";
4 голосов
/ 24 марта 2010

AS3 является гораздо более типизированным и традиционно ОО-языком, чем javascript (и AS2), поэтому все манипуляции с прототипами прекращены. Это, наверное, самая большая разница, IMO, поскольку это означает, что что-то вроде jQuery не может действительно работать в AS3.

Как было указано, местные жители должны быть объявлены с var. Кроме того, нетипизированные и повторно объявленные переменные генерируют предупреждения компилятора.

Как правило, вы обнаружите, что есть и другие примеры наоборот (код AS3 недопустим в javascript).

2 голосов
/ 20 марта 2010

Ну, вы не можете использовать alert (и некоторые другие глобальные функции JS), onmouseover, onload и т. Д. (Обработчики событий JS), все, что связано с формой или браузером (как вы предлагаете). Вы не можете копировать и вставлять код JS в класс AS3, потому что AS3 строго типизирован, и вы можете получить ошибки компилятора (более того, в JS у вас вообще нет классов).

2 голосов
/ 12 марта 2010

С одной стороны, метод eval () не будет работать.

Кроме того, конструктор RegExp () не работает, по крайней мере, со строками. Другими словами, вы не можете сказать:

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

Вы должны написать это так:

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

Другими словами, вы не можете выполнять подстановку переменных для частей строкового аргумента.

2 голосов
/ 12 марта 2010

Actionscript 1 намного ближе к Javascript. Actionscript 3 следует за ныне несуществующей ECMAScript 4 spec.

...