功能与新功能的区别

use*_*284 7 javascript constructor function new-operator

我有时看到人们这样做Function('alert("hi")'),有时他们这样做new Function('alert("hi")')

这两者有区别吗?

SLa*_*aks 6

规范(第127页)说,他们是一致的.

15.3.1.1函数(p1,p2,...,pn,body)

Function使用一些参数p1,p2,...,pn,body(其中n可能为0,即没有"p"参数,并且也可能未提供body)调用该函数时,将执行以下步骤:

  1. 创建并返回一个新的Function对象,就像在具有相同参数的新表达式中使用标准内置构造函数一样(15.3.2.1).

但是,您应该Function不惜一切代价避免使用cinstructor.
它需要eval你传递给它的字符串; eval是邪恶的,也是缓慢的.