对于我的新项目(Node.js上的JavaScript),我必须使用Templateproject。
我在其中找到了以下代码片段。我想了解他们在这里做什么。对我而言,这没有任何意义。
....
1 lines[lines.length - 1] = lines[lines.length - 1].trim().replace(/};$/, '}');
2 words = lines.join('\n');
3 var resultFunc = new Function('return ' + words + ';');
4
5 return resultFunc();
6 } catch (e) {
....
为什么第4行中的"new Function"
和这里发生了什么?
谢谢
答案 0 :(得分:0)
在Javascript中,函数也是Function类的对象。
下面是什么意思...
//if words = 'some_string'
var resultFunc = new Function('return ' + words + ';');
//if words = 'somestring'
var resultFunc = function() {
return 'somestring';
}
答案 1 :(得分:0)
使用
new Function()
代替eval()
。
new Function()
通常用作eval()
函数的替代。由于these的原因,使用eval函数被认为是不好的做法。现在,当您将字符串作为参数传递给new Function()
时,它实际上将创建一个函数,并将该字符串中的代码作为函数的主体。因此,您可以将var resultFunc = new Function('return ' + words + ';');
行视为:
var words = "someValue";
var resultFunc = function () {
return "someValue";
}