我为我的问题做了一个JSFiddle :(另见下文) https://jsfiddle.net/oymrrL81/
var code = ["alert('first');n=1;", "alert('second');", "alert('third');IWantThisVariableChanged = true;", "alert('fourth');"];
var IWantThisVariableChanged = false;
function doStuff(){
for(var n = 0; n != 4;n++){
eval(code[n]);
}
}
doStuff();
alert("Variable changed? " + IWantThisVariableChanged);
基本上我想在函数内部计算代码,只能访问eval所在函数之外的变量。这是因为它改变了我用于for循环的变量,破坏了循环。并且请不要建议我在循环中更改我的变量名称:(,我需要任何变量名称的解决方案。
答案 0 :(得分:1)
尝试在不同的上下文中执行eval
。喜欢
function inContext(code){
eval(code);
}
function doStuff(){
for(var n = 0; n != 4;n++){
inContext.call(null, code[n]);
//eval(code[n]);
}
}
希望有所帮助
答案 1 :(得分:0)
您可以使用对象来存储值,Object.keys()
,RegExp.prototype.test
,Strin.prototype.split()
,String.prototype.replace()
,isNaN
,Number
,{{ 1}},Boolean
构造函数
new Function