嗨,如果可能的话,我想在没有 eval的情况下从字符串/数组运行 javascript 。这有点像我想要的。
code = ["document.write('hello')", "function(){}"];
code.run[1];
任何帮助将不胜感激,谢谢。
嗨,如果可能的话,我想在没有 eval的情况下从字符串/数组运行 javascript 。这有点像我想要的。
code = ["document.write('hello')", "function(){}"];
code.run[1];
任何帮助将不胜感激,谢谢。
从字符串运行 javascript 的唯一方法是使用eval()
.
更正:除了eval("codeString");
,new Function("codeString")();
也会执行你的代码。这样做的缺点是,当您调用时,您的代码必须被解释new Function(...)
,而与浏览器在预定义代码时可能使用的优化相比,如下例所示。
所以,eval("codeString");
并且new Function("codeString")();
是可能的,但是是坏主意。
更好的选择是将函数存储在数组中,如下所示:
function foo(){
document.write('hello');
}
function bar(){
return 1+2;
}
var code = [ foo,
function(){
alert("Hi there!");
},
bar
];
code[0](); // writes "hello" to the document.
code[1](); // alerts "Hi there!"
code[2](); // returns 3.
您可以将其作为函数执行。
像这样
function yourNewEval(){
var code = ["document.write('hello');", "function(){}"];
var F = new Function(code[0]);
return(F());
}
yourNewEval();
从 Stefan 的答案复制的答案。
如何执行存储为字符串的 Javascript中有很多创造性的答案?