优秀的编程知识分享平台

网站首页 > 技术文章 正文

神秘的arguments对象详解(神秘的近义词)

nanyue 2024-08-03 17:49:37 技术文章 7 ℃

arguments是javascript的一个内置对象,每个函数都有属于自己的一个arguments对象,它包含了函数所要调用的参数。

function fn(){

console.log(arguments);

}

fn(10,20);

arguments是个类似数组但不是数组的对象,说他类似数组是因为其具备数组相同的访问性质及方式,能够由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。

function fn(){

console.log(arguments.length);

console.log(arguments[1]);

}

fn(10,20);// ->结果为2,20

把arguments对象转换成一个真正的数组,可以使用数组中slice方法,从而求平均值

function avg(){

var arg = Array.prototype.slice.call(arguments);

return eval(arg.join("+"))/arg.length;

}

var result = avg(1,2,3,4,5);

console.log(result);// -> 结果为3

其中变量arg就是一个含有函数所有参数的标准javascript数组对象。

arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表。

function fn(x,y){

console.log(arguments.length);

}

fn(1,2,3);// -> 结果为3

修改参数值:x和arguments[0]都对传递的参数1进行引用,改变其中一个值,即改变了二者所有的值

function fn(x,y){

x = 4;

//arguments[0] = 4;

console.log(arguments[0]);

}

fn(1,2,3); // -> 结果为4

argumens.callee是一个指向正在运行函数的指针,在严格模式下不兼容

function factorial(num){

if(num <= 1){

return 1;

}else{

return num * arguments.callee(num-1);

}

}

console.log(factorial(5));// -> 120

JavaScript中函数是不能重载的,但argumens是可以模拟函数重载

function fn(){

if(arguments.length == 1){

console.log(arguments[0] + 10)

}

if(arguments.length == 2){

console.log(arguments[0] + arguments[1])

}

}

fn(10); // -> 20

fn(10,30); // -> 40

前端入坑深似海,自此妹纸是浮云。大家好,我是木雷,喜欢我就关注我吧。

开怀一笑:

突然不想干程序员了怎么办?

拔出来。

Tags:

最近发表
标签列表