arguments详解
arguments 是一个伪数组对象。代表传给一个function的参数列表。
实例:
function printArgs() {
console.log(arguments);
}
printArgs("A", "a", 0, { foo: "Hello, arguments" });
返回的结果是:
[“A”, “a”, 0, Object]
控制台打印出来的是一个数组,但并不是真正的数组,所以说arguments 是一个伪数组的对象
argument有 length 属性,可以用 arguments.length 来获得传入函数的参数个数。
实例:
function fn()
{
console.log("The number of parameters is " + arguments.length);
}
fn();
fn(1, 2);
fn(1, 2, 3);
执行结果:
The number of parameters is 0
The number of parameters is 2
The number of parameters is 3
由于它是一个伪数组,如果想要使用数组方法的话需要将它转换成一个真的数组
[].slice.call(arguments);
在这里,只是简单地调用了空数组的 slice 方法,而没有从 Array 的原型层面调用。
Array.from() 是个非常推荐的方法,其可以将所有类数组对象转换成数组。
ES6中的 arguments
使用扩展运算符
function fn() {
console.log(...arguments);
}
fn(1, 2, 3);
执行结果是:
1 2 3
简洁地讲,扩展操作符可以将 arguments 展开成独立的参数。
数组与伪数组对象
数组具有一个基本特征:索引。这是一般对象所没有的。
const obj = {0: 'a', 1: 'b'};
const arr = ['a', 'b'];
我们利用obj[0]、arr[0] 都能取得自己想要的数据,但取得数据的方式确实不同的。obj[0] 是利用对象的键值对存取数据,而arr[0]却是利用数组的索引。事实上,Object 与 Array 的唯一区别就是 Object 的属性是 string,而 Array 的索引是 number。
下面看看伪数组对象。
伪数组的特性就是长得像数组,包含一组数据以及拥有一个 length 属性,但是没有任何 Array 的方法。再具体的说,length 属性是个非负整数,上限是 JavaScript 中能精确表达的最大数字;另外,类数组对象的 length 值无法自动改变。
————————————————
版权声明:本文为CSDN博主「ruglcc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ruglcc/article/details/89221641