var args = [].slice.call( arguments, 1 );

373 阅读1分钟

经常在一些书或者代码片段中见到这样一句代码,[].slice.call( arguments, 1 );初看不知其意,决定学习一下,

上代码

function test() {
 // 截取参数
    // 让arguments类数组的指针继承[array],从而使用[]的各种方法;
    // args对象就是slice方法处理后的数组
    var args = [].slice.call(arguments,1);
    console.log(args,"first");
    // es6的扩展运算符可以得到同样的效果,先变数组,再截取;
    var args = [...arguments].slice(1);
    console.log(args,"second");
}
test(1,2,3,4,5,6,7);
test([1,2,3,4,5,6],[1111],{name:1234});

运行

image.png

通过结果得出结论,[].slice.call(arguments,1)就是用来处理函数参数的,只不过平时不接触,看到它的第一感觉很陌生。