检查是否在任何if语句中使用了Javascript变量

时间:2013-10-11 10:28:28

标签: javascript variables if-statement syntax global-variables

我想检查一个给定的Javascript变量是否被程序中的任何IF语句使用。有没有办法动态地执行此操作而不是纯静态代码分析。

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

1 个答案:

答案 0 :(得分:1)

这是一个坏主意。有很多事情可能会出错。您可以查看sandboxing

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

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会被显示,所以任何想要绕过这个的人都会找到一种方法。