今天写代码的时候,遇到一个关于arguments的问题,就简单总结了几种方法,
一般网上的文章都是介绍1种或2种,我这里给了5种,拿去不谢!!!
具体方法如下:
简单说一下arguments,arguments 就是函数内一个內建对象,它包含函数接收到的所有变量;所以,在实际开发中,我们使用arguments可以很方便的获取到所有的实参,并且也需要对其使用是写数组的方法。它与数组一样有索引以及length的属性。但是却不能使用数组的方法。
1,比较常用的方法
function transformsArrs() {
var arr = [];
for (var i = 0; i < arguments.length; i++) {
arr.push(arguments[i]);
}
return arr;
}
2.Array.prototype.slice.call();
function transformsArrs() {
console.log(arguments instanceof Array); // false
var argsArray = Array.prototype.slice.call(arguments);
console.log(argsArray instanceof Array); // true
}
3.扩展运算符,因为它是一个对象
function transformsArrs() {
console.log(arguments instanceof Array); // false
var argsArray = [...arguments ];
console.log(argsArray instanceof Array); // true
}
4.Array.from(); ES6里的方法
function transformsArrs() {
console.log(arguments instanceof Array); // false
var argsArray = Array.from(arguments);
console.log(argsArray instanceof Array); // true
}
5.[].slice.call(); 和Array.prototype.slice.call();类似,只是一个用的是数组,一个用的是数组原型;
function transformsArrs() {
console.log(arguments instanceof Array); // false
var argsArray = [].slice.call(arguments);
console.log(argsArray instanceof Array); // true
}
结束!干脆!利索!