[英]How do I convert a string into an executable line of code in Javascript?
我有以下代码
console.log("I am");
var x = "console.log('Alive!')";
现在我只想使用x
来执行分配给它的代码字符串——例如,我什至可能不知道 x 的值,但只想执行它——这可能吗?
eval()这会将字符串转换为 javascript 代码。
eval("console.log('Alive! Woo!')");
eval
和new Function
让你从字符串解析和执行 JavaScript 代码。
通常,避免从字符串执行代码。 并且永远不要从字符串中执行代码,其中字符串是不受信任的输入(例如,如果您从用户 A 获取输入,则永远不要在与用户 B 的会话中使用这些来评估它)。
我在这里看到答案指向你eval
。 eval
授予对您的局部变量等代码的访问权限,如果您将它与不受信任的输入一起使用,它会变得非常强大且非常危险。
在可能的情况下,避免eval
。 在您的情况下,您可以轻松避免它:
例如:
console.log("I am"); var x = "console.log('Alive!')"; new Function(x)();
该代码创建了一个函数,其主体是来自x
的文本,然后立即执行该函数。
您正在寻找的是eval()
。 通过将字符串传递给此函数,您将把字符串作为 JavaScript 代码求值,并且它将返回字符串中的代码返回的任何返回值。
使用此功能时请注意。 您不想评估任何您不知道可以安全执行的代码。 例如,运行用户生成的代码可能会弄乱您正在制作的任何内容。 在网站上的 JavaScript 中使用它时,这可能只会导致客户端出现问题,因此可能不会构成太大的安全威胁,在评估例如服务器端的代码时,您需要非常小心。
正如在此处的其他帖子中所暗示的那样,如果您可以控制要运行的源代码,则您可能想要创建一个函数而不是评估字符串。
您正在寻找的称为函数:
function x() {
console.log('Alive!');
}
如果x
已经是包含代码的字符串,您可以使用eval(x)
来执行它。 eval
是邪恶的。
var x = "console.log('Alive!')";
eval(x)
让函数 mathchallenge (num) 将从 1 到 num 的所有数字相加,例如,如果输入为 4,那么您的程序应该返回 10,因为 1+2+3+4=10。 对于测试用例,参数 num 将是 1 到 1000 之间的任何数字
"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.