菜单

自在上 JavaScript——第 4 部分:函数中的 arguments 对象

2018年12月19日 - JavaScript

轻松上 JavaScript (4):函数中之 arguments 对象

2017/11/11 · JavaScript
· arguments

原文出处: Dhananjay
Kumar
   译文出处:码农网

小峰
   

JavaScript函数具有像数组一样的目的,那一个目的称为arguments,与传递让函数的参数相对应。传递给JavaScript函数的有着参数都得下arguments对象来引用。

本我们开读书,仔细看上边列有底代码:

function add(num1, num2) { var res = num1 + num2; return res; } var r =
add(7, 8); console.log(r);

1
2
3
4
5
6
function add(num1, num2) {
    var res = num1 + num2;
    return res;
}
var r = add(7, 8);
console.log(r);

每当点的函数中,num1和num2是个别独参数。你得用名也num1和num2的arguments来引用这么些参数。除了arguments名称之外,你还好使JavaScript数组,如目的arguments来引用它。所以,上边的函数可以重写,如下所示:

function add(num1, num2) { var res = arguments[0] + arguments[1];
return res; } var r = add(7, 8); console.log(r);

1
2
3
4
5
6
function add(num1, num2) {
    var res = arguments[0] + arguments[1];
    return res;
}
var r = add(7, 8);
console.log(r);

每当JavaScript函数中,arguments对象用于访问如故引用传递让函数的所有参数。arguments对象是可用于函数的有些变量。arguments对象的长短卓殊给传递给函数的arguments数量。请看下的代码,作为出口将收获2,因为生半点独arguments传递让函数:

function add(num1, num2) { var res = arguments.length; return res; } var
r = add(7, 8); console.log(r);

1
2
3
4
5
6
function add(num1, num2) {
    var res = arguments.length;
    return res;
}
var r = add(7, 8);
console.log(r);

JavaScript函数具有比如说数组一样的靶子,那多少个目的称为arguments,与传递给函数的参数相对应。传递给JavaScript函数的有参数还好运用arguments对象来引用。

arguments对象非是纯数组

JavaScript的arguments对象不是纯的JavaScript数组。你切莫可知针对arguments对象举办诸如push,pop,slice等操作。正使您用于底下列有底代码中所见到的这样,执行push操作会引发那么些,因为arguments.push不是函数。

function add(num1, num2) { arguments.push(78); var res = num1 + num2;
return res; }

1
2
3
4
5
function add(num1, num2) {
    arguments.push(78);
    var res = num1 + num2;
    return res;
}

今天大家初始学,仔细看下边列有底代码:

足安装arguments对象

而可在arguments对象往往组吃安装一定的宗。首先,你得使用索引0设置数组的第一独宗,如下所示:

function add(num1, num2) { arguments[0] = 15; var res = num1 + num2;
return res; } var r = add(7, 8); console.log(r);

1
2
3
4
5
6
7
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]引用相同之值。所以,当您更新arguments[0]每每,num1的价为会合吃更新。对于地点的代码,输出将是23。

function add(num1, num2) {
    var res = num1 + num2;
    return res;
}
var r = add(7, 8);
console.log(r);

将arguments对象转换为数组

刚好而大家当这首稿子中牵线的那么,JavaScript函数arguments对象不是纯数组。除了长度属性外,它从不任何其余性能。可是,你可以动用Array.prototype.slice.call以arguments对象转换为数组,如下所示:

function add(num1, num2) { var arg =
Array.prototype.slice.call(arguments); console.log(arg.pop()); }

1
2
3
4
function add(num1, num2) {
    var arg = Array.prototype.slice.call(arguments);
    console.log(arg.pop());
}

每当ECMAScript 6饱受,你可将arguments对象转换为一个再三组,如下所示:

function add(num1, num2) { var arg = Array.from(arguments);
console.log(arg.pop()); }

1
2
3
4
function add(num1, num2) {
    var arg = Array.from(arguments);
    console.log(arg.pop());
}

于点的函数中,num1和num2是个别独参数。你能够用名也num1和num2的arguments来引用这几个参数。除了arguments名称之外,你还是可以使JavaScript数组,如目的arguments来引用它。所以,下面的函数能够重写,如下所示:

结论

总的说来,关于arguments对象要谨记的片着重工作时有发生:

简单地说,JavaScript
arguments对象是一个看似数组的靶子,它引用传递给函数的参数。在ECMAScript
6蒙,引入的rest参数即都为大规模用来顶替函数中之arguments对象用于变量数或者参数。

以斯“轻松JavaScript”体系的生一样篇稿子中,我们以介绍JavaScript函数中的类似。

1 赞 收藏
评论

图片 1

function add(num1, num2) {
    var res = arguments[0] + arguments[1];
    return res;
}
var r = add(7, 8);
console.log(r);

每当JavaScript函数中,arguments对象用于访问仍然引用传递给函数的有所参数。arguments对象是可用于函数的一部分变量。arguments对象的长度非凡给传递让函数的arguments数量。请圈下面的代码,作为出口将取得2,因为起少个arguments传递给函数:

function add(num1, num2) {
    var res = arguments.length;
    return res;
}
var r = add(7, 8);
console.log(r);

arguments对象非是纯数组

JavaScript的arguments对象非是纯的JavaScript数组。你免可知针对arguments对象举办诸如push,pop,slice等操作。正而你以在底下列有底代码中所观望底那么,执行push操作会掀起这一个,因为arguments.push不是函数。

function add(num1, num2) {
    arguments.push(78);
    var res = num1 + num2;
    return res;
}

足安装arguments对象

公可以arguments对象往往组吃安装一定的起。首先,你得使用索引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]援相同的价。所以,当你更新arguments[0]平时,num1的价值吗会为更新。对于地方的代码,输出将凡23。

拿arguments对象转换为数组

刚使我辈于及时篇稿子被介绍的这样,JavaScript函数arguments对象非是纯数组。除了长度属性外,它没有外其他属性。可是,你可行使Array.prototype.slice.call将arguments对象转换为数组,如下所示:

function add(num1, num2) {
    var arg = Array.prototype.slice.call(arguments);
    console.log(arg.pop());
}

在ECMAScript 6中,你得将arguments对象转换为一个频组,如下所示:

function add(num1, num2) {
    var arg = Array.from(arguments);
    console.log(arg.pop());
}

结论

简单的讲,关于arguments对象急需谨记的组成部分重中之重事情来:

简地游说,JavaScript
arguments对象是一个近乎数组的对象,它引用传递让函数的参数。在ECMAScript
6饱受,引入的rest参数现就为大规模用来替代函数中之arguments对象用于变量数要参数。

当此“轻松JavaScript”体系的下一样篇稿子中,大家以介绍JavaScript函数中的接近。

迎参预学习交换群569772982,我们一块学习交换。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图