javascript深入理解系列(一)——arguments 对象

javascript深入理解系列文章网址
https://www.jianshu.com/p/451eed9094f5

为什么会有arguments

为了在函数内部能够调用所有的参数,所以就有了arguments

function exec(a, b, c) {
    console.log(arguments[0]);
}


exec(1, 2, 3);

arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推。这个对象只有在函数体内部,才可以使用。

通过arguments对象的length属性,可以判断函数调用时到底带几个参数。

1.与数组的关系:
虽然arguments很像数组但是他是一个对象,也就是所谓的类似数组的对象

数组的slice方法可以将类似数组的对象变成真正的函数

var arr = Array.prototype.slice.call(arrayLike);

2.其实现在可以用rest代替

function exec(...params) {
    console.log(params[0]);
}


exec(1, 2, 3);

区别是params是一个数组,而arguments是类数组

3.callee 属性
arguments对象有一个callee对象,用来返回对应的原函数

可以通过arguments.callee起到调用函数自身的目的

参考:https://wangdoc.com/javascript/types/function.html#arguments-%E5%AF%B9%E8%B1%A1

你可能感兴趣的:(javascript深入理解系列(一)——arguments 对象)