Я использую UglifyJS для синтаксического анализа, преобразования и преобразования JS-кодов. Одна из моих целей - преобразовать AST, вставив новые определения переменных. Например:Преобразование AST в UglifyJS
var x;
var y;
x = 1;
y = x;
x = 3;
Я хочу, чтобы вставить новую переменную определение «переменная _x» в любом положении, например, перед оператором «у = х». Преобразованный код должен быть таким:
var x;
var y;
x = 1;
var _x = x;
y = _x;
_x = 3;
Я пробовал TreeTransformer в UglifyJS. Обновление ссылки на символ для новой (x -> _x) не представляет проблемы. Но я не понимаю, как получить правильную позицию для вставки с помощью TreeTransformer. Может ли кто-нибудь поделиться некоторыми соображениями? Некоторые примеры кода были бы лучше!
объявления переменных являются областями действия, и интерпретатор должен поднять их до начала функции, поэтому не имеет значения, где вы вводите новое объявление, пока оно находится в правой области. Надеюсь, это полезная информация. Кроме того, это звучит как эксперимент с метаморфизмом в javascript uglification ..... быть хорошим человеком. – Catalyst