老师,为什么这个arguments.length是0呢

老师,为什么这个arguments.length是0呢

<!DOCTYPE html>
<html>

<head lang="en">
<meta charset="UTF-8">
<title>arguments</title>
</head>

<body>
<script>
//补充代码
function fn() {
arguments[0] = 0
arguments[1] = 1
arguments[2] = 2
console.log(arguments);
console.log(arguments[2]);
console.log(arguments.length);
}
fn()
</script>
</body>

</html>

http://img1.sycdn.imooc.com//climg/60b5d69f09bfd4ca07930114.jpg

推入后输出arguments和索引都是正常的,长度为什么是0?

调用函数输入参数时,长度就是正常的


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,这样理解也是可以的,通过索引赋值,例如:arguments[1] = 1,获取长度时得到的结果为0,这个比较特殊,同学可以先记一下,一般情况下,使用arguments时都会给函数传实参,这样可以正确得到长度值。

祝学习愉快~

好帮手慕言 2021-06-01 15:12:39

同学你好,arguments是实参的集合,也就是在调用函数时传递参数的集合,调用fn函数时没有传递参数,所以arguments.length为0。

利用arguments[0] = 0这种形式,可以重新赋值,但是不能改变length值。

建议:可以在调用函数时,传递参数

http://img1.sycdn.imooc.com//climg/60b5da0409c5e06805450213.jpg

祝学习愉快~


  • 提问者 __Promise #1

    还是有点不理解    为什么arguments已经能输出内容了,但是长度为0

    是不是应该理解为,在没有实参传入的时候因为arguments没有长度

    所以​对arguments的赋值都是待定的

    2021-06-01 15:21:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师