Javascript Templateproject“奇怪”的新功能调用即时通讯不明白

时间:2018-08-18 05:40:57

标签: javascript node.js

对于我的新项目(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"和这里发生了什么?

谢谢

2 个答案:

答案 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";
}