何时创建参数对象?
when is argument object created?
在 this 博客 post 中,它说参数对象是在创建执行上下文期间创建并赋值的,在执行任何代码之前。
然而,在 Kyle Simpson 的 YDKJS 书中,有一个看起来像这样的例子,
function foo(a) {
console.log( a ); // 2
}
foo( 2 );
他说将值“2”赋值给参数 'a' 发生在创建执行上下文之后和代码执行期间。
我一直在努力寻找一种情况,使两者都有意义,但它们似乎完全相反。参数对象究竟是什么时候创建的?提前致谢!
在博客的例子中,它指的是 arguments object
(mdn link) ,而不是局部变量,其中 a 是一个。
首先参数列表对象是created on the caller side。
然后传入EvaluateDirectCall
(or any other internal method that ends up calling a function) and then the execution context is created.
之后,当代码计算时 - references to the variables 是从执行上下文中获得的。
以上所有详细信息:FunctionDeclarationInstantiation
在 this 博客 post 中,它说参数对象是在创建执行上下文期间创建并赋值的,在执行任何代码之前。 然而,在 Kyle Simpson 的 YDKJS 书中,有一个看起来像这样的例子,
function foo(a) {
console.log( a ); // 2
}
foo( 2 );
他说将值“2”赋值给参数 'a' 发生在创建执行上下文之后和代码执行期间。
我一直在努力寻找一种情况,使两者都有意义,但它们似乎完全相反。参数对象究竟是什么时候创建的?提前致谢!
在博客的例子中,它指的是 arguments object
(mdn link) ,而不是局部变量,其中 a 是一个。
首先参数列表对象是created on the caller side。
然后传入EvaluateDirectCall
(or any other internal method that ends up calling a function) and then the execution context is created.
之后,当代码计算时 - references to the variables 是从执行上下文中获得的。
以上所有详细信息:FunctionDeclarationInstantiation