2013-02-26 40 views
2

我正在阅读说到Function definitions的ECMA 262 v5脚本部分。对于这两个函数声明和函数表达式,下列提到:所有函数声明和表达式都是由幕后的被调用的新函数()创建的吗?

返回如在 13.2

指定创建一个新的功能对象的结果是什么在一节中提到的第一个步骤13.2是“创建一个新的原生ECMAScript对象...”,然后“将F的[[Class]]内部属性设置为”Function“

由于”创建新的Funciton对象“的措辞,想知道在幕后,函数声明/表达式是c通过调用新函数(....)来重新调整?

+0

可能相关:[Function函数构造自身吗?](http://stackoverflow.com/q/12881552/1048572) – Bergi 2013-02-26 20:52:56

回答

1

的ECMA脚本说明书的section 15.3.2.1谈到新功能(...)的表达,和新的功能(...)表达本身是指相同的逻辑,如13.2节指定。关于新的功能(...)表达

子弹数11指定...

返回如在13.2指定传递数p作为所述FormalParameterListopt和主体作为函数体创建了新的功能的对象。作为Scope参数传入全局环境并严格按照严格标志传入。

13.2节是函数创建逻辑的单个源,是否创建函数表达式,函数声明,或调用该函数的构造。

所以要回答这个问题,没有。创建函数声明/表达式不会调用新函数(...)。

0

由于“创建一个新的功能可按对象”,如果场景,函数声明/表情背后的是通过调用新的功能(....)创造了我想知道的措辞?

不,它确实如此,创建一个新对象并使其成为函数。你会发现在new Function其他场景后会发生什么?相反,new Function也会在13.2中调用该函数实例。