0

我见过类似的用法,var f1=new Function();但仅此而已。尝试在 Google 中搜索Function-class 但没有返回我需要的内容。

它的意义是什么?

请建议我如何以及何时使用它。如果可能的话,给我一些真正的链接来研究它。

4

4 回答 4

5

最佳实践建议您永远不要使用基类型构造函数。在很多情况下,new与基本类型一起使用会破坏typeof.

但是,new Function() 是有效的JavaScript。只是不推荐,在大多数情况下也没有用(var a= function() {}等效)。

并不是说您可以像这样使用Function构造函数作为eval调用new Function('var a = 1; return a + a;')。但这可能很危险,因此请谨慎使用。

于 2013-10-22T18:30:21.763 回答
2

不一定有使用的有益理由,new Function()因为您可以像这样简单地创建一个空白函数:

var f1 = function () { 
   // my function code here;
};

// calling the function
f1();

Function无论哪种方式,每个人都将附有原型。

new Function()(also new Array(), etc) 通常应该避免,因为它必须评估。

于 2013-10-22T18:26:43.363 回答
1

从技术上讲,这两位 JavaScript 之间确实没有区别(其他答案已经涵盖了这一点):

var f1 = new Function();

var f1 = function () { };

但是,您可以做的是Function检查变量的类型:

var f1 = 'cat';
console.log(typeof(f1) === typeof(Function)); // false

var f2 = function () { return 'cat'; };
console.log(typeof(f2) === typeof(Function)); // true
于 2013-10-22T18:39:04.760 回答
0

使用 Function 构造函数创建的函数对象在创建函数时进行解析。这比声明一个函数并在代码中调用它效率低,因为使用函数语句声明的函数会与其余代码一起解析。

来自MDN

于 2013-10-22T18:30:59.953 回答