JavaScript基础知识——函数的 arguments 和 this

本文介绍了JavaScript中的两个特殊对象属性:arguments和this。arguments对象是一个类数组对象,它包含了所有传递给函数的参数,并提供了访问这些参数的方法。另一方面,this对象指向调用当前函数的对象,这对于理解对象方法的作用域至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript的函数有两个特殊的对象属性,arguments 和 this。

arguments对象

该对象是一个类数组对象,包含了所有的传入函数的参数。如,定义了如下函数:

function fun(param1,param2) {
    return param1 + param2;
}

不论为这个函数传入多少实参,js解释器都不会报错,因为实际上,ECMAScript 中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。在函数体内,可以通过arguments对象访问这个数组。如下:

function fun(param1,param2) {
    console.log(arguments.length);
    console.log(arguments);
}
 fun(1,2);

运行上面的代码,会打印两条信息,第一条是数字2(参数的数组的长度为2),第二条信息是一个对象,如下:
这里写图片描述

可以看到:
(1)arguments对象有属性名为数字的属性,分别对应传入函数的参数,在函数内部可以通过arguments[0]这样的表达式获取到传入的参数值;
(2)还有一个length属性,用于表示传入函数的个数;
(3)还有一个callee属性,这个属性是一个指针,指向当前函数。可以利用这个属性,实现递归函数。如下面的阶乘函数:

function factorial(num) {
  if (num <= 1){
     return 1;
  } else {
     return num * arguments.callee(num-1);
  }
}

写到这里,要插一句,递归函数最佳的实现是下面这样的,因为上面的写法在严格模式下会导致错误:

var factorial = function f(num) {
  if (num <= 1){
     return 1;
  } else {
     return num * f(num-1);
  }
}

this对象

该对象指调用这个函数的对象。如下:

var obj = {
    name:'Urie',
    age:20,
    fun:function(){
        return this;
    }
};
obj.fun();

运行上面的代码,返回的就是obj这个对象,如下:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值