如何运行存储在变量中的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分钟前取下它:)