Предположим, у меня есть доступ к полному набору источников, которые потенциально могут использовать переменную JavaScript foo
.Как переход переходного использования переменной JavaScript через вызовы функций?
Некоторые из исходного кода выглядит следующим образом:
foo.bar = 'baz';
(function(a, b, c) {
a();
b.bar = 'whee';
c();
}(fn, foo, fn));
Есть ли какие-либо инструменты, доступные (правила ESLint, модули НПХ и т.д.), которые могли бы идентифицировать все вхождения в foo
переменных здесь? Я получаю список всех доступных переменных, в том числе в пределах областей и включая вложенные объекты. Таким образом, он должен определить:
foo.bar
использования в глобальном масштабеfoo
использования в вызове функцииb.bar
вызова является доступfoo.bar
И что t об строках eval'd, которые ссылаются на переменную? –
'b.bar' не использует переменную' foo'. – Bergi
Вы можете отследить все ссылки (не -eval) на идентификатор 'foo' (а также вне зависимости от того, входит ли он в зону вызова' eval'), но вы не можете отслеживать все обращения к определенному объекту без выполнения кода (что сводится к проблеме остановки) – Bergi