欢迎回来!在本系列的部分中,我们解释了如何使用这个对象,以及在我们的JS代码中可以采用的几种不同的方式。
JavaScript函数具有类似数组的对象,这些对象称为参数,与传递给函数的参数相对应。所有传递给JavaScript函数的参数都可以使用arguments对象来引用。
现在我们开始了,让我们考虑这里列出的代码:
function add(num1, num2) { var res = num1 + num2; return res; } var r = add(7, 8); console.log(r);在上面的函数中,num1和num2是两个参数。您可以使用名为num1和num2的参数来引用这些参数。除了参数名称之外,还可以使用类似于对象参数的JavaScript数组引用它们。所以,上面的函数可以重写,如下所示:
function add(num1, num2) { var res = arguments[0] + arguments[1]; return res; } var r = add(7, 8); console.log(r);在JavaScript函数中,参数对象用于访问或引用传递给函数的所有参数。参数对象是可用于该函数的局部变量。参数对象的长度等于传递给函数的参数的个数。让我们考虑下面的代码,在那里你将得到2作为输出,因为有两个参数已经传递给函数:
function add(num1, num2) { var res = arguments.length; return res; } var r = add(7, 8); console.log(r);参数对象不是纯数组JavaScript参数对象不是纯粹的JavaScript数组。使用参数对象不能执行诸如push,pop,slice等操作。正如你将在下面列出的代码中看到的,这样做会引发异常,因为arguments.push不是一个函数。
function add(num1, num2) { arguments.push(78); var res = num1 + num2; return res; }可以设置参数对象您可以在参数对象数组中设置特定的项目。首先,您可以使用索引0设置数组的第一个项目,如下面的清单所示:
function add(num1, num2) { arguments[0] = 15; var res = num1 + num2; return res; } var r = add(7, 8); console.log(r);在add函数中,num1和arguments [0]引用相同的值。所以,当你更新参数[0]时,num1的值也会被更新。对于上面的代码,输出将是23。
将参数对象转换为数组正如我们在本文中已经介绍的那样,JavaScript函数参数对象不是纯数组。除了长度属性外,它没有任何其他属性。但是,您可以使用Array.prototype.slice.call将参数对象转换为数组,如下所示:
function add(num1, num2) { var arg = Array.prototype.slice.call(arguments); console.log(arg.pop()); }在ECMAScript 6中,您可以将参数对象转换为一个数组,如下所示:
function add(num1, num2) { var arg = Array.from(arguments); console.log(arg.pop()); }结论总而言之,下面是关于参数对象的一些重要事情:
参数对象的长度等于传递给函数的参数(参数)的数量。
参数对象是类似数组的对象,但不是JavaScript数组。
您不能使用其他JavaScript数组方法,例如push,pop,slice等等。
JavaScript参数对象索引从零开始。所以第一个参数将被参数[0]引用,第二个参数将被参数[1]引用,等等。
简单地说,一个JavaScript参数对象是一个类似数组的对象,它引用传递给函数的参数。在ECMAScript 6中,引入了静态参数,现在被广泛使用,而不是变量数或参数的函数中的参数对象。
在这个“简单的JavaScript”系列的下一篇文章中,您将学习JavaScript函数中的类。