JS“零部件”
一些常用但不曾深入了解的零散知识点整理。
arguments
在 JavaScript 中,
arguments是一个特殊的对象(类数组)具有length属性,代表函数调用时传递的所有参数,包括那些没有在函数定义中声明的参数。arguments可以用来访问所有传递给函数的参数,无论它们是否被声明。
js
function foo(a, b) {
console.log((a == arguments[0]) == true); // true
console.log(a); // 0
console.log(b); // 1
console.log(arguments[0]); // 0
console.log(arguments[1]); // 1
console.log(arguments[2]); // 2
}
foo(0, 1, 2);上述代码中,函数 foo 只声明了两个参数a和b,但是通过 arguments 对象,我们可以访问传递给函数的所有三个参数。
...args(rest parameters)
...args语法可以定义一个函数的剩余参数(rest parameters)。即,剩余参数允许一个函数接收任意数量的参数,并将它们打包到一个数组里,以便在函数内部进行处理。
js
function foo(a, b, ...args) {
console.log(a); // 0
console.log(b); // 1
console.log(args); // [2,3,4]
}
foo(0, 1, 2, 3, 4);这里的 args仅仅是一个代指,可以是rest或其他自定义名称,关键点是它前面的 ... (展开运算符),如果函数的最后一个命名参数以 ... 为前缀,则它会将所有后面剩余的是实参个数包裹成一个数组。
arguments 和 ...rest (rest parameters) 异同点
二者都能得到函数的未规定数量的所有参数;
arguments表示函数的所有参数集合,是一个类数组对象,具有length属性;...args表示一个函数的参数中未与形参相对应的剩余参数集合,是一个数组;

