如何运行存储在变量中的javascript函数?

如何运行存储在变量中的javascript函数?,javascript,Javascript,我有一个包含指令的变量,例如: runThis= "alert(); if(1>2) { alert("NO WAY");}"; 如何运行runThis中的代码 eval(runThis); 但是你不应该这样写代码,这很难管理 改为这样做: runThis= function () { alert(); if(1>2) { alert("NO WAY"); }; } 那就叫这个 但是你不应该这样写代码,这很难管理 改为这样做: runThis= func

我有一个包含指令的变量,例如:

runThis= "alert(); if(1>2) { alert("NO WAY");}";
如何运行runThis中的代码

eval(runThis);
但是你不应该这样写代码,这很难管理

改为这样做:

runThis= function () {
  alert(); 
  if(1>2) { 
    alert("NO WAY");
  };
}
那就叫这个

但是你不应该这样写代码,这很难管理

改为这样做:

runThis= function () {
  alert(); 
  if(1>2) { 
    alert("NO WAY");
  };
}

然后只需调用runThis

,如果您真的想做这种事情,可以使用eval()函数:

eval(runThis);
但是,这不是推荐的方法,因为它可能导致各种难以诊断的bug和错误

更好的方法是使用希望执行的代码编写适当的函数,然后将其分配给变量并通过变量调用:

//Assign function to variable
runThis = function(){ 
  alert();
  if(1>2) {
    alert("NO WAY");
  };
}

//Later, invoke the function
runThis();

如果您真的想做这种事情,可以使用eval()函数:

eval(runThis);
但是,这不是推荐的方法,因为它可能导致各种难以诊断的bug和错误

更好的方法是使用希望执行的代码编写适当的函数,然后将其分配给变量并通过变量调用:

//Assign function to variable
runThis = function(){ 
  alert();
  if(1>2) {
    alert("NO WAY");
  };
}

//Later, invoke the function
runThis();
警告:这是一种可怕的做法!不要这样做

一旦你正确地避开了内心的引语。

警告:这是一种可怕的做法!不要这样做


一旦你正确地转义了你的内部引号。

这样做的肮脏方式就是

eval(运行此命令)

然而,这一点并不值得推荐

或者,将其包装在函数中

runThis = function(){ 
  // statements go here
}

然后您可以调用它
runThis()

这样做的肮脏方式是

eval(运行此命令)

然而,这一点并不值得推荐

或者,将其包装在函数中

runThis = function(){ 
  // statements go here
}
然后您可以调用它
runThis()

eval(运行此命令)

但不推荐这样做。请记住
eval()是邪恶的

eval(运行此命令)


但不推荐这样做。请记住
eval()是邪恶的

eval将执行一个字符串,但您最好定义如下运行它。并像调用任何函数一样调用它

var runthis = function(){
     //code  here
}
但如果需要执行字符串调用eval


eval(runthis)

Eval将执行一个字符串,但最好按如下方式定义run。并像调用任何函数一样调用它

var runthis = function(){
     //code  here
}
但如果需要执行字符串调用eval


eval(runthis)

好吧,如果我否决了所有的
eval
s,我会大受打击,这对你不公平。删除。@Steve,我做了一些编辑来解决您的一些问题。首先,我指出eval是不被推荐的,其次,我已经删除了w3schools链接。尽管如此,他们还是提出了一个问题,我提供了一个答案——我不知道出于某种原因,他们是否真的,真的不能避免将函数作为字符串,所以至少这给了他们一个选项noted。我6分钟前就把它删除了:)好吧,如果我否决了所有的
eval
s,我会大受打击,这对你不公平。删除。@Steve,我做了一些编辑来解决您的一些问题。首先,我指出eval是不被推荐的,其次,我已经删除了w3schools链接。尽管如此,他们还是提出了一个问题,我提供了一个答案——我不知道出于某种原因,他们是否真的,真的不能避免将函数作为字符串,所以至少这给了他们一个选项noted。我在6分钟前取下它:)