Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中计算字符串函数和返回值?_Javascript - Fatal编程技术网

如何在javascript中计算字符串函数和返回值?

如何在javascript中计算字符串函数和返回值?,javascript,Javascript,我有一个字符串形式的方法,如: var str = "function evalTest(param){if(param)return '<div>hello</div>'}else return '<div>world</div>'" 现在,如果我这样评估: var final = eval(res); 我希望final应该包含result world,因为passed param=false 如何在这个世界上实现这个结果?首先需要注意的是:

我有一个字符串形式的方法,如:

var str = "function evalTest(param){if(param)return '<div>hello</div>'}else return '<div>world</div>'"
现在,如果我这样评估:

var final = eval(res);
我希望final应该包含result world,因为passed param=false

如何在这个世界上实现这个结果?

首先需要注意的是:对于您试图解决的任何问题,几乎肯定有一个更好的解决方案,将该函数放在字符串中

还有一个:除了同一个最终用户之外,不要评估最终用户提供的代码。例如,永远不要让用户A提供代码,然后在用户B的浏览器中对其求值。在用户B不知道您正在这样做并明确同意的情况下

实际上,几乎在任何时候,当您使用eval或它的同类新函数时,都值得退一步看看是否有其他方法可以使用

但在回答问题时:

eval只是创建函数。字符串中没有调用它的任何内容

由于eval在当前作用域中神奇地工作,因此对字符串求值将在当前作用域中创建函数。然后,您可以调用函数以获得所需的结果:

var str=函数evalTestparam{ifparam{return'hello'}else{return'world'}; var res=str.replaceparam,param=false; 评估; var最终=评估测试;
console.logfinal;这是非常危险的。你应该读一读。我有一个字符串方法,就像你试图通过这样做来解决的任何问题一样,几乎肯定有更好的方法来解决它。你可能会考虑提出一个关于这个问题的问题。
var final = eval(res);