什么时候创建参数对象?

时间:2017-04-26 11:23:14

标签: javascript scope arguments executioncontext

this博文中,它表示在执行任何代码之前,创建参数对象并在创建执行上下文期间为其赋值。 但是,在凯尔辛普森的书YDKJS中,有一个看起来像这样的例子,

function foo(a) {
  console.log( a ); // 2
}

foo( 2 );

他说,价值分配' 2'讨论' a'在执行上下文创建之后和代码执行期间发生 我一直试图找到一个两者都有意义的场景,但它们似乎完全相反。什么时候创建参数对象?提前谢谢!

2 个答案:

答案 0 :(得分:0)

对于博客,它是对arguments object(mdn链接)的反应,而不是局部变量,其中a是一个。

答案 1 :(得分:0)

首先,参数列表对象是created on the caller side

然后将其传递到EvaluateDirectCall(或最终调用函数的任何其他内部方法),然后传递到execution context is created

然后在代码评估时 - 从执行上下文中获取references to the variables

以上详细信息:FunctionDeclarationInstantiation