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

Check if a Javascript variable is used in any if statement

本文关键字:语句 if 任何 Javascript 变量 是否 检查      更新时间:2023-09-26

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

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

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

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

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将是可见的,所以任何想要解决这个问题的人都会找到一种方法。