javascript的参数_JavaScript rest参数实际如何工作

javascript的参数

My last article covered spread syntax and Object.assign in detail, but glossed over rest parametersin the interest of time. I do, however, feel they deserve a closer look.

我的上一篇文章详细介绍了传播语法和Object.assign ,但是为了Object.assign时间,对其余参数进行了介绍。 但是,我的确感到应该仔细观察。

Let’s begin at the trusty MDN Docs:

让我们从值得信赖的 MDN文档开始:

The rest parameter syntax allows us to represent an indefinite number of arguments as an array.

rest参数语法允许我们将不确定数量的参数表示为数组。

That last part, “as an array”, is interesting, because before ES6 arrow functions, we used the arguments object. It was array-like, but not actually an array.

最后一部分“作为数组”很有趣,因为在ES6箭头功能之前,我们使用了arguments 对象 。 它类似于数组,但实际上不是数组。

Example:

例:

function returnArgs() {
  return arguments;
}

We see arguments has indices, so it’s loop-able:

我们看到arguments具有索引,因此它可以循环:

function loopThruArgs() {
  let i = 0;

  for (i; i < arguments.length; i++) {
    console.log(arguments[i]);
  }
}

But it’s not an array.

但这不是数组。

Let’s contrast that with a function using rest parameters:

我们来对比一下使用rest参数的函数:

es6Params = (...params) => {
  console.log('Array?', Array.isArray(params));
  return params;
};

It’s just an array, meaning we can use any of the Array methods on it!

只是一个数组 ,这意味着我们可以在上面使用任何Array方法!

Let’s write a function that doubles and sums every parameter you give it.

让我们编写一个函数, 您赋予它的每个参数加倍求和

double = (x) => x * 2;
sum = (x, y) => x + y;

doubleAndSum = (...numbers) => numbers.map(double).reduce(sum, 0);

And you can name as many parameters as you want in your function before using rest.

在使用rest之前,您可以在函数中命名任意数量的参数。

someFunction = (a, b, c, ...others) => {
  console.log(a, b, c, others);
};

But it has to be the last one specified, since it captures the rest of your arguments. ?

但是它必须是指定的最后一个,因为它捕获了您的其余参数。 ?

I think we know what’s happening under the hood, but let’s be thorough. Check out babeljs.io/repl, where you can write ES6+ code and have it transpiled into ES5 in real-time.

我想我们知道幕后发生的事情,但让我们彻底。 查阅 babeljs.io/repl ,您可以在其中编写ES6 +代码并将其实时转换为ES5。

That’s a neat little function, let’s expand it and add comments.

那是一个简洁的小功能,让我们对其进行扩展并添加注释。

someFunction = function someFunction() {
  var _len = arguments.length;

  // create an array same length
  // as the arguments object
  var args = Array(_len);
  var i = 0;

  // iterate through arguments
  for (i; i < _len; i++) {
    // assign them to
    // the new array
    args[i] = arguments[i];
  }

  // and return it
  return args;
};

Since Babel wrote an old-school function for us, it can access the arguments object! arguments has indices and a .length property, which is all we need to create a perfect clone of it.

由于Babel为我们编写了一个老式函数,因此可以访问arguments对象! arguments具有索引和.length属性,这是我们为其创建完美副本的全部。

This is why we can use Array methods like map, filter, reduce on rest parameters, because it creates an Array clone of arguments.

这就是为什么我们可以使用诸如mapfilterreducerest参数之类的Array方法的原因,因为它创建了arguments的Array克隆。

Have fun rest-ing!

祝您休息愉快!

翻译自: https://www.freecodecamp.org/news/how-do-javascript-rest-parameters-actually-work-227726e16cc8/

javascript的参数

cumian9828
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
轻松学习JavaScript函数中的 Rest 参数
12-11
JavaScript函数可以使用任意数量的参数。与其他语言(如C#和Java)不同,你可以在调用JavaScript函数时传递任意数量的参数JavaScript函数允许未知数量的函数参数。在ECMAScript 6之前,JavaScript有一个变量来访问这些未知或可变数目的参数,这是一个类似数组的对象,并非一个数组。细想以下代码来理解arguments变量: function add(){ var result = 0; for(let i=0;i<arguments.length;i++){ result = result + arguments[i]; } return result
轻松学习 JavaScript (2):函数中的 Rest 参数
前端大全
11-14 553
(点击上方公众号,可快速关注) 英文: Dhananjay Kumar   译文:码农网/小峰 www.codeceo.com/article/easy-javascript-02-rest.html 如果好文章投稿,点击 → 了解详情 JavaScript函数可以使用任意数量的参数。与其他语言(如C#和Java)不同,你可以在调用JavaScrip
javascriptRest 参数(...)
热门推荐
往前的娘娘
06-03 2万+
概述:       Rest就是为解决传入的参数数量不一定, rest parameter(Rest 参数) 本身就是数组,数组的相关的方法都可以用。 1.语法: function f(a, b, ...theArgs) { // ... } 2.描述: theArgs以“...”开头,它是一个数组,它的值来自于实际调用者传入[0,theArgs.length)  (索引的范围:
JS语法之:rest参数
王同学LM的专栏
11-20 1万+
JavaScript高级程序设计》在讲Function类型时说: 说起来ECMAScript中什么最有意思,我想那莫过于函数了。 今天来看看有意思的地方之一:rest参数。 我们知道,ES6支持类(class)这种写法了: class A { constructor(x, y) { this._x = x; this._y = y; ...
js 剩余参数
Wangdanting123的博客
10-18 1515
js 剩余参数
探讨JavaScript中的Rest参数参数默认值
10-23
的主要介绍了JavaScript中的Rest参数参数默认值,内容很充实,需要了解的朋友可以参考下
深入学习JavaScript中的Rest参数参数默认值
01-21
本文将讨论使 JavaScript 函数更有表现力的两个特性:Rest 参数参数默认值。 Rest 参数 通常,我们需要创建一个可变参数的函数,可变参数是指函数可以接受任意数量的参数。例如,String.prototype.concat 可以接受...
必须要懂的JS之(rest参数与spread语法)
leleshuo
10-05 732
rest参数与spread语法
jsrest 参数和扩展运算符...的用法
分享前端开发工程师的一些日常生活、前端知识点、职业发展、对一些问题的看法、感悟等等
05-09 1661
函数的rest 参数 ES6 引入 rest 参数(形式为…变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。 function test() { return arguments; } test(2, 5, 3) // [2, 5, 3]的伪数组 function test(...values) { return values; } test(2, 5, 3) // [2, 5, 3] 数组的扩展运算符
JS rest参数 return大括号位置
S_aitama的博客
07-16 355
rest参数 ES6新增 为弥补这种情况: function sum(a,b){ console.log(a+b); if(arguments.length>2) for(var i=2;i<arguments.length;i++>) console.log(arguments[i]); } 我想输出额外传入的参数,使用arguments就必须排除前面规定好的项 ES6 的 rest参数可以
前端JavaScript篇之对 rest 参数的理解、ES6中模板语法与字符串处理
最新发布
星辰迷上大海的博客
02-03 979
rest参数是一种在函数定义中使用的特殊语法,它允许函数接受任意数量的参数,并将它们收集到一个数组中。通俗地说,rest参数就像是一个容器,用来存放函数接收到的额外参数
剩余参数Rest与 Spread 语法
Hy_0452的博客
12-21 212
Rest参数 可以通过使用三个点**…**并在后方跟着包含剩余参数的数组名称,将其包含在函数定义中,也就是将剩余的参数收集到一个数组中 const sumAll = (...args) => { let sum = 0; for (let i of args) sum += i; return sum } console.log(sumAll(2, 3, 4)) //9 也可以将第一个参数作为变量,将其余的收集起来 const str = (firstName, ..
深入探索JavaScript中实用而高级的Rest参数和Spread语法
爱蹦跶的全栈大A阿
01-12 1727
函数是JavaScript这个语言的核心,而如何处理函数的参数是函数编程中非常关键的问题。传统的JavaScript在处理不定参数以及数组的时候需要些枯燥乏味的代码。好在ES6给了我们两个光明的武器:Rest参数和Spread语法。hoje我们一起来看看这两种语法糖独特的魅力所在。​通过本文的介绍,我们可以看到Rest参数和Spread语法在处理不定参数以及数组操作中具有非常高的表达力。Rest参数为我们处理函数的不定参数提供了极大的便利,我们可以非常灵活方便地将参数合并成数组。
廖雪峰js教程笔记 2
weixin_30236595的博客
10-11 180
arguments JavaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array: function foo(x) { alert(x); // 10 for (var i=0; i<arguments.length; i++) { ...
js rest获取剩余参数
cominglately的博客
09-25 786
参考文档  https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Rest_parameters 如果函数的最后一个命名参数以...为前缀,则在函数被调用时,该形参会成为一个数组,数组中的元素都是传递给该函数的多出来的实参的值。 和arguments 的区别: a. argume
ES6 rest参数和扩展运算符
zzxboy1的博客
12-16 6899
ES6引入了rest参数(形式为“…变量名”)。其中rest参数搭配的变量是一个数组可以使用数组的一切操作。    比如:function rest(...values){ let sum=0; for(var val of values){ sum+=val; } return sum; } add(1,2,3)//6  值得注意的是rest参数之后
js 学习随笔之 Arguments 对象 ...rest参数
时秋的博客
07-06 1144
arguments 是一个对应于传递给函数的参数的类数组对象 描述 arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数的条目,第一个条目的索引从0开始。例如,如果一个函数传递了三个参数,你可以以如下方式引用他们: arguments[0] arguments[1] arguments[2...
ES6核心特性
weixin_33714884的博客
05-22 612
前言 ES6 虽提供了许多新特性,但我们实际工作中用到频率较高并不多,根据二八法则,我们应该用百分之八十的精力和时间,好好专研这百分之二十核心特性,将会收到事半功倍的奇效!写文章不容易,请大家多多支持与关注!本文首发地址GitHub博客(含思维导图) 一、开发环境配置 这部分着重介绍:babel 编译ES6语法,如何用webpack实现模块化。 1.babel 为啥需要babel? ES6 提供...
JavaScript获取函数的参数
06-08
此外,从 ECMAScript 6 开始,我们可以使用 rest 参数语法来代替 `arguments` 对象,更加清晰和易读。例如: ```javascript function sum(...numbers) { let total = 0; for (let i = 0; i ; i++) { total += ...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • python中创建空列表_Python空列表教程–如何在Python中创建空列表 67916
  • json文件中注释_JSON注释示例—如何在JSON文件中进行注释 12375
  • python升序和降序排序_Python排序列表数组方法–通过示例解释升序和降序 12174
  • c语言三元运算符_C中的三元运算符解释 8602
  • python 获取唯一值_Python唯一列表–如何获取列表或数组中的所有唯一值 7510

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • tailwindcss模板_如何开始使用TailwindCSS
  • grub命令行引导_引导行高度
  • javascript闭包_为什么您应该知道JavaScript闭包
2020年1088篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司恩施seo网站优化多少钱黔南百度标王价格芜湖网站推广方案哪家好玉树SEO按效果付费临夏至尊标王多少钱忻州网站推广方案公司丽江网站优化按天计费价格潜江营销网站价格包头网站优化按天扣费公司黄石推广网站推荐保山网站推广方案公司宝鸡网站排名优化贺州推广网站公司广东优化报价乌海SEO按效果付费推荐伊犁seo排名山南百度竞价公司铜陵推广网站推荐商洛seo报价镇江百度竞价包年推广公司太原网站搜索优化价格鹤岗外贸网站建设多少钱承德建网站报价吕梁营销网站多少钱梅州英文网站建设报价哈尔滨营销型网站建设价格本溪百度关键词包年推广哪家好恩施营销网站公司辽源网站建设设计大庆网站推广系统公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化