Javascript 为什么';参数';函数对象上的属性为空?

Javascript 为什么';参数';函数对象上的属性为空?,javascript,arguments,Javascript,Arguments,代码: 输出: (扩大) foo(a,b,c) 参数:null 呼叫方:空 长度:3 姓名:“富” 原型:对象{…} :函数() 问题: 从函数的属性来看,大多数属性都是有意义的: 调用方为null,因为我调用了foo();关于全局对象 由于函数的定义,名称为“foo” length是参数的数目 但为什么参数返回null?我们如何填充该列表 编辑:我不是说foo()返回的内容的属性。我说的是函数对象foo本身的属性 澄清: 该属性仅在函数(或该函数的某些调用)运行时在函数内部可用,但已弃用

代码:

输出:

(扩大)

foo(a,b,c)
参数:null
呼叫方:空
长度:3
姓名:“富”
原型:对象{…}
:函数()
问题:

从函数的属性来看,大多数属性都是有意义的:

  • 调用方为null,因为我调用了foo();关于全局对象
  • 由于函数的定义,名称为“foo”
  • length是参数的数目
但为什么参数返回null?我们如何填充该列表

编辑:我不是说
foo()
返回的内容的属性。我说的是函数对象
foo
本身的属性

澄清:

该属性仅在函数(或该函数的某些调用)运行时在函数内部可用,但已弃用,因此您不应使用它:

函数foo(a,b,c){ console.log('hi'); log(foo.arguments); } foo(1,2,3)“调用者为空,因为我在全局对象上调用了foo()”—呃,不,在您发布的代码中,
foo()
根本没有调用,它只是被记录了下来?“只在函数内部可用”—嗯,不,它的全部问题是它也在函数范围之外可用
function foo(a, b, c) {
    console.log('hi');
}

console.log(foo);
foo(a, b, c)
    arguments: null
    caller: null
    length: 3
    name: "foo"
    prototype: Object {...}
    <prototype>: function()