为了账号安全,请及时绑定邮箱和手机立即绑定

JS中活跃对象(Active Object)的函数参数,到底是根据形参还是实参生成?

JS中活跃对象(Active Object)的函数参数,到底是根据形参还是实参生成?

撒科打诨 2019-03-26 16:15:32
JavaScript中函数的变量对象,即活跃对象(Active Object)AO,在创建并初始化时,到底是根据函数的形参来生成属性,还是根据实参来生成属性呢?说法1,根据形参来生成,深入理解JavaScript执行上下文、函数堆栈、提升的概念函数的形参(当进入函数执行上下文时) —— 变量对象的一个属性,其属性名就是形参的名字,其值就是实参的值;对于没有传递的参数,其值为undefined说法2,根据实参来生成,深入理解JavaScript系列(12):变量对象(Variable Object)活动对象是在进入函数上下文时刻被创建的,它通过函数的arguments属性初始化。arguments属性的值是Arguments对象:这就让人很困惑了。有代码:var a=1.2,b={},c="hello";function sumOf(x,y){   var tmp=x+y;   console.log(tmp);}sumOf(a,b,c);我按照两种说法各自书写一下生成的变量对象,如果有什么错误,请指出。在进入函数sumOf的可执行代码时,创建活跃对象并初始化:说法1:根据形参AO_sumOf = {x:1.2,y:{},// 实参c被丢弃,但可以通过sumOf.arguments[2]访问到。tmp:undefined}说法2:根据实参AO_sumOf = {x:arguments[0],y:arguments[1],arguments[2]:arguments[2]; // 可以看到,如果以实参生成属性,属性名会是个问题tmp:undefined}我是比较偏向于以形参生成属性值的说法,但即使在说法1的原文中也提到了用arguments对象来初始化参数,这就让我搞不懂了。
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 599 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信