Как обнаружить переменные зависимости для функции JavaScript - PullRequest
0 голосов
/ 19 марта 2012

Скажите, у меня есть эта функция:

function test(){
    return a + b + 1;
}

Как я могу динамически определить, что для запуска потребуется глобальные переменные a и b?Например, что-то вроде get_dependencies(test) возвращает ['a', 'b']

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Нет встроенного способа сделать это в стандартном JavaScript, если вы пытаетесь сделать это с помощью самого JavaScript.

Почти на всех (но не на всех) движках JavaScript вы можете получить формуисточника функции из функции toString объекта функции, например:

var testSource = test.toString();

... и, конечно, вы можете это проанализировать.Это нестандартное поведение (результат вызова toString для функции не определен в спецификации ), но он широко поддерживается.Вам все равно придется выполнить разбор, чтобы найти символы.

Для разбора у вас есть несколько вариантов.Вы можете попытаться отделить часть синтаксического анализатора JSLint от остальной части, или альтернативно компрессор со страшным именем UglifyJS имеет полный синтаксический анализатор JavaScript, который уже отделен от части компрессора.(см. parse-js.js; очевидно, есть небольшой кусочек специфичных для NodeJS вещей, которые вы, возможно, захотите удалить).

0 голосов
/ 19 марта 2012

Вы можете использовать инструмент javascript 'lint', который проверит ваш код на наличие распространенных ошибок или странностей.

Некоторые из них можно найти в Интернете:

В вашем случае вы можете выделить отдельные функции, например, с помощью регулярного выражения, и отправить их в такой инструмент.

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