不要让函数

时间:2016-12-26 03:50:56

标签: javascript for-loop eval

我为我的问题做了一个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循环的变量,破坏了循环。并且请不要建议我在循环中更改我的变量名称:(,我需要任何变量名称的解决方案。

2 个答案:

答案 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.testStrin.prototype.split()String.prototype.replace()isNaNNumber,{{ 1}},Boolean构造函数



new Function