◆
JavaScript arguments 对象详解与转数组方法
为什么需要 arguments 对象
由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数。这就是 arguments 对象的由来。
- 通过
arguments[index]获取函数运行时的参数 - 通过
arguments的参数可在函数内部修改,且非严格模式下,修改arguments对象会影响到实际的函数参数 arguments.length可以判断函数调用时到底带几个参数
const fnn = function (num1, num2) {
console.log(arguments.length); // 3
console.log(arguments[0]); // 1
console.log(arguments[1]); // 2
console.log(arguments[2]); // 3
console.log(num1 === arguments[0]); // true
console.log(num2 === arguments[1]); // true
arguments[1] = 'wfly';
console.log(arguments[1]); // wfly
console.log(num2); // wfly
console.log(num2 === arguments[1]); // true
console.log(arguments[1000]); // undefined
};
fnn(1, 2, 3);
arguments 是类数组
arguments 是类数组,除了 length 属性和索引元素之外没有任何 Array 属性
arguments 转数组方法
// slice 方法
var args = Array.prototype.slice.call(arguments);
var args = [].slice.call(arguments);
// Array.from
const args = Array.from(arguments);
// 扩展运算符
const args = [...arguments];
// 循环
const args = [];
for (let i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
callee 属性
callee:返回它所对应的原函数。
const fnn = function () {
console.log(arguments.callee === fnn);
};
fnn(); // true
非严格模式下,可以通过
arguments.callee,达到调用函数自身的目的

还没有留言,来发表第一条吧~