简单的JavaScript部分:什么是函数中的参数对象?

智能甄选 2018-02-09 12:16:42

欢迎回来!在本系列的部分中,我们解释了如何使用这个对象,以及在我们的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函数中的类。

0 阅读:1
智能甄选

智能甄选

技术交流、资源共享,是程序员的网上乐园。