首页 > 其他分享 >arguments详解,类数组转数组方法

arguments详解,类数组转数组方法

时间:2022-10-13 17:01:50浏览次数:34  
标签:console log args 详解 arguments 数组 fnn const


为什么需要 arguments 对象

由于 ​​JavaScript​​​ 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数。这就是 ​​arguments​​ 对象的由来。

  • 通过​​arguments[index]​​ 获取函数运行时的参数
  • 通过​​arguments​​​ 的参数可在函数内部修改,且非严格模式下,修改​​arguments​​ 对象会影响到实际的函数参数
  • ​arguments.length​​ 可以判断函数调用时到底带几个参数
const fnn = function (num1,) {
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​​,达到调用函数自身的目的


标签:console,log,args,详解,arguments,数组,fnn,const
From: https://blog.51cto.com/u_13028258/5754024

相关文章