您的位置:首页 > 新闻 > 资讯 > 【JavaScript】函数:arguments对象

【JavaScript】函数:arguments对象

2025/5/23 5:54:45 来源:https://blog.csdn.net/weixin_45980065/article/details/141759495  浏览:    关键词:【JavaScript】函数:arguments对象

文章目录

  • 1 定义
  • 2 与数组的关系
  • 3 callee属性

1 定义

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

  • 正常模式
var f = function(a, b) {arguments[0] = 3;arguments[1] = 2;return a + b;
}f(1, 1) // 5,函数f()调用时传入的参数,在函数内部被修改成3和2
  • 严格模式
var f = function(a, b) {'use strict'; // 开启严格模式arguments[0] = 3;arguments[1] = 2;return a + b;
}f(1, 1) // 2,修改arguments对象,不会影响到真实参数a和b。
  • length属性
function f() {return arguments.length; // 返回实际调用时带入的参数个数
}f(1, 2, 3) // 3
f() // 0

2 与数组的关系

虽然arguments很像数组,但它是一个对象。数组专有的方法(比如slice和forEach),不能在arguments对象上直接使用。
如果要让arguments对象使用数组方法,真正的解决方法是将arguments转为真正的数组。下面是两种常用的转换方法:slice方法和逐一填入新数组。

var args = Array.prototype.slice.call(arguments);// 或者
var args = [];
for (var i = 0; i < arguments.length; i++) {args.push(arguments[i]);
}

3 callee属性

arguments对象带有一个callee属性,返回它所对应的原函数。
可以通过arguments.callee,达到调用函数自身的目的。这个属性在严格模式里面是禁用的,因此不建议使用。

var f = function () {console.log(arguments.callee === f);
}f() // true

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com