回溯JavaScript源代码中的表达式
对不起,我想不出更好的标题了 假设我们有JavaScript代码字符串:回溯JavaScript源代码中的表达式,javascript,python,parsing,static-analysis,Javascript,Python,Parsing,Static Analysis,对不起,我想不出更好的标题了 假设我们有JavaScript代码字符串: var n = Math.floor(Math.random() * 10), className; if (n === 1) { className = "a"; } else if (n === 2) { className = "b"; } else { className = "c"; } document.querySelector("." + className); 我的想
var n = Math.floor(Math.random() * 10),
className;
if (n === 1) {
className = "a";
} else if (n === 2) {
className = "b";
} else {
className = "c";
}
document.querySelector("." + className);
我的想法是希望将所有可能的字符串发送到该特定函数(document.querySelector
)。所以我想得到['.a','.b','.c']
。还可能涉及多个变量,在代码中多次修改,因此列表会更长
现在我如何在Python中实现这一点?我看过PyV8,但是没有文档,所以这不是一个选项;python spidermonkey也是如此,它已经过时了。这不是一个容易的问题。您希望通过函数生成所有可能的路径。考虑下面的代码并询问自己如何确定警报是否运行:
var n = Math.floor(Math.random() * 10),
if (Math.sqrt(n) > n) {
alert('a');
}
计算机不知道Math.sqrt(n)
总是小于n
。如果不运行代码,如何确定警报不会显示
在简单的情况下,库可能能够做到这一点,但当您的函数有许多可能的路径并使用了许多函数时,您需要进行大量的分析才能得到正确的答案。这不是一个容易的问题。您希望通过函数生成所有可能的路径。考虑下面的代码并询问自己如何确定警报是否运行:
var n = Math.floor(Math.random() * 10),
if (Math.sqrt(n) > n) {
alert('a');
}
计算机不知道Math.sqrt(n)
总是小于n
。如果不运行代码,如何确定警报不会显示
在简单的情况下,一个库可能能够做到这一点,但是当你的函数有很多可能的路径并且使用了很多函数时,你需要进行一些有力的分析才能得到正确的答案,您可以采用蒙特卡罗方法:记录传递给
文档。querySelector
的所有参数,并针对各种输入运行代码。好的,您可以采用蒙特卡罗方法:记录传递给文档。querySelector
的所有参数,并针对各种输入运行代码。这不是对您问题的回答,但是如果你在JavaScript中有3个类似的选项,那么你的结果就会偏向于else
的情况:Math.floor(Math.random()*10)%3
我不明白,你每次只能得到一个类来querySelectorAll
只要不用担心JS,这不是问题的关键,也不是你问题的答案,但是如果你只有3个选项,你想在JavaScript中得到这样的东西,否则你的结果就会偏向于else
case:Math.floor(Math.random()*10)%3
我不明白,你总是一次得到一个类来querySelectorAll
,只是不要担心JS,这不是重点,这就是重点。我只是不知道如何实现它。@seriousdev:你想解决什么问题?您不能简单地在代码中搜索所有行className=…
,然后将它们放入列表中吗?因为解决给定的问题可能有些过分。不,因为我甚至不知道变量的名称。另外:关于className=“toggle-”+x
?@seriousdev:我不知道有什么工具可以满足您的要求(生成JavaScript的所有可能路径)。你需要课程列表做什么?有什么不同的方法可以解决这个问题吗?是的,就是这样。我只是不知道如何实现它。@seriousdev:你想解决什么问题?您不能简单地在代码中搜索所有行className=…
,然后将它们放入列表中吗?因为解决给定的问题可能有些过分。不,因为我甚至不知道变量的名称。另外:关于className=“toggle-”+x
?@seriousdev:我不知道有什么工具可以满足您的要求(生成JavaScript的所有可能路径)。你需要课程列表做什么?有没有其他方法可以解决这种情况?在这种情况下是不可能的:随机性、AJAX调用等。如果运行足够多次,随机性将不会成为问题:-)在这种情况下是不可能的:随机性、AJAX调用等。如果运行足够多次,随机性将不会成为问题:-)