第27天 说说你对arguments的理解,它是数组吗?
Activity
grepug commentedon May 13, 2019
object like array
Amour1688 commentedon May 13, 2019
arguments
是一个对象。js不能像java一样实现重载,
arguments
对象可以模拟重载。js中每个函数都会有
arguments
这个实例,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments
的元素。arguments.length
为函数实参个数,arguments.callee
引用函数自身。arguments他的特性和使用方法
特性:
1.arguments对象和Function是分不开的。
2.因为arguments这个对象不能显式创建。
3.arguments对象只有函数开始时才可用。
使用方法:
虽然arguments对象并不是一个数组,但是访问单个参数的方式与访问数组元素的方式相同
例如:
arguments[0],arguments[1]...
buzhanhua commentedon May 13, 2019
arguments并不是一个数组, 但是它有length属性以及可以以下标的形式取值
tiu5 commentedon May 15, 2019
arguments 不是数组,是类数组。
类数组 转 数组的方法有
tzjoke commentedon May 28, 2019
用来获取函数参数
[].slice.call(arguments)
es6 显式提供
function foo(...args){}
arguments.callee 在匿名函数中指向这个函数
myprelude commentedon Jun 13, 2019
不是数组,但是它有数组类似的length属性 可以通过 Arrary.from(arguments) 转化为数组。也可以通过Arrary.prototype.foEach.call(argunment),
能够转化类数组对象成为数组
DarthVaderrr commentedon Jul 4, 2019
严格模式禁用了arguments.callee
getanimation commentedon Jul 17, 2019
arguments是个伪数组,它有数组的length以及下标取值;但是它不能用数组的一些方法,例如:Array.push()之类的
wyx2014 commentedon Jul 24, 2019
var list = document.getElementById('test-list'); var listchild = list.children;
那这种ul标签下li获取出来的listchild也是类数组了呗,难怪无法直接foreach
Konata9 commentedon Aug 12, 2019
arguments
并不是数组,是一个 array like 对象,它有length
这个属性。通常情况下,为了使用方便我们会把arguments
转成数组,方法有下面几种。即使不转为数组,可以使用下标访问。如arguments[0]
。[...arguments]
Array.from(arguments)
[].slice.call(arguments)
一般情况下不会对
arguments
进行操作。但在实现一些低级或者通用功能时候会使用到,如实现一个泛柯理化的函数,或者根据参数的数量执行不同的方法(类似函数的重载)。seho-dev commentedon Aug 14, 2019
类数组对象(js权威指南)记得第一次啃书就看的这一节,所以这个名词记得非常清楚
他是一个对象,是类数组对象(js权威指南),他有着和数组几乎一样的api,比如length,自增key,增加一个key自动增加length,使之可以用arg[0]来访问数据
可以通过arguments来访问,传入的参数,arg[0]
如果更改了arguments的值的话,那么传入的参数也会被改变,因为前者是后者的一个引用;
seho-dev commentedon Aug 14, 2019
是的,目前好像只有这2个情况会产生类数组对象
zhangkuibao commentedon Sep 9, 2019
blueRoach commentedon Jun 23, 2020
[...arguments]
Array.from(arguments)
[].slice.call(arguments)
9 remaining items