1

我想检查给定的 Javascript 变量是否被程序中的任何 IF 语句使用。有没有办法动态地做到这一点,而不是纯静态代码分析。

我没有在这里阅读任何文件。假设我可以在运行时使用一些扩展注入一段 JS 代码,并动态查找给定变量是否通过 IF 语句。

4

1 回答 1

1

这是一个坏主意。有很多事情可能会出错。你可以看看沙盒

但是,只要您不依赖此安全性,您可能会发现这很有用:

var x = function (a, b, c) { if(a) {console.log(a)}};
var y = function (a, b, c) { if(b) {console.log(a)}};

// You can get the text of a function. Notice it's been formatted.
console.log(x.toString());
>>> "function (a, b, c) { if (a) { console.log(a) } }"

var matcher = /if ?\(.?a.?\)/g;

x.toString().match(matcher);
>>> ["if (a)"]

y.toString().match(matcher);
>>> null

需要注意的事情,我的头顶:

  • 不同的浏览器可能会以不同的方式格式化代码。
  • 变量可以通过将它们分配给不同的名称来命名。
  • 变量可以通过索引访问和字符串访问。
  • 这是一个幼稚的正则表达式,显然会匹配if (nota)
  • 您的 javascript 将是可见的,因此任何想要解决此问题的人都会找到方法。
于 2013-10-11T10:51:53.370 回答