展开语法用"..."进行表示,展开语法将可迭代的对象拆分成独立的值(语法层面展开)。扩展语法通常用于将可迭代的对象的值传递到函数的参数中。今天小编将从以下方面进行介绍:
- 函数传参中的应用
- 数组的相关应用
- 剩余参数的应用
- 函数传参中的应用
ES6之前,如果我们希望将数组作为参数分别传递给函数中的参数,我们可以使用Function的apply()方法。如下段代码所示:
function myFunction(a, b) { return a + b; } var data = [1, 4]; var result = myFunction.apply(null, data); console.log(result); //Output "5”
从上述代码,apply方法接受一个数组,将它们分拆成单独参数传递函数进行调用。
ES6的展开语法能让我们以更简洁的方式进行调用,如下段代码所示:
function myFunction(a, b) { return a + b; } let data = [1, 4]; let result = myFunction(...data); console.log(result); //Output "5”
代码运行期间,JavaScript解释器调用myFunction之前,将会用1,4表达式替换...运算符:
let result = myFunction(...data);
上述代码将会进行如下转换:
let result = myFunction(1,4);
替换后,函数中的代码将会继续执行。
数组的相关应用
数组的合并
展开语法可将数组添加到另外一个数组中,成为其中的一部分。
let array1 = [2,3,4]; let array2 = [1, ...array1, 5, 6, 7]; console.log(array2); //Output "1, 2, 3, 4, 5, 6, 7”
代码运行期间,如下代码:
let array2 = [1, ...array1, 5, 6, 7];
上述代码将会替换成如下代码:
let array2 = [1, 2, 3, 4, 5, 6, 7];
在push方法中的运用
有时候,我们需要将一个数组的内容追加到另一个数组中,ES6之前我们可以这么做,如下段代码所示:
var array1 = [2,3,4]; var array2 = [1]; Array.prototype.push.apply(array2, array1); console.log(array2); //Output "1, 2, 3, 4”
ES6的展开语法能以更简洁的形式实现,如下段代码所示:
let array1 = [2,3,4]; let array2=[1]; array2.push(...array1); console.log(array2); //Output "1, 2, 3, 4”
代码运行期间,如下代码:
array2.push(...array1);
上述代码将会替换成如下代码:
array2.push(2, 3, 4);
传递多个数组参数
我们可以使用展开语法传递多个数组进行参数传递,如下段代码所示:
let array1 = [1]; let array2 = [2]; let array3 = [...array1, ...array2, ...[3, 4]];//multi arrayspread let array4 = [5]; function myFunction(a, b, c, d, e) { return a+b+c+d+e; } let result = myFunction(...array3, ...array4); //multi array spread console.log(result); //Output "15”
剩余参数的应用
我们知道JS函数内部有个arguments对象,可以拿到全部实参。现在ES6给我们带来了一个新的对象,可以拿到除开始参数外的参数,即剩余参数,我们可以使用展开语法...进行获取。
ES6之前,我们可以这样获取剩余参数,如下段代码所示:
function myFunction(a, b) { const args = Array.prototype.slice.call(arguments, myFunction.length); console.log(args); } myFunction(1, 2, 3, 4, 5); //Output "3, 4, 5”
ES6中,上述代码我们可以这样改下,如下段代码所示:
function myFunction(a, b, ...args) { console.log(args); //Output "3, 4, 5" } myFunction(1, 2, 3, 4, 5);
是不是很简单,有个我们需要注意的事,一旦函数中的参数第一个参数使用剩余参数,就不能声明第二个非剩余参数,否则将会抛出错误。例如下段代码所示:
function fn(...rest,foo) {} //Output "SyntaxError: Rest parameter must be last formal parameter"
小节
今天的内容就到这里,展开语法是不是特别的酷啊,在日后的开发中,我们尽量使用新的语法糖替代旧的写法。让我们代码看起来更加干净、整洁、易懂。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- MichaelJackson-Bad(1987)[24Bit]WAV
- 周慧敏.2014-HIM【英皇娱乐】【WAV+CUE】
- 张国荣.2024-告别乐坛演唱会足本3CD【环球】【WAV+CUE】
- 群星.1997-同根同心【EMI百代】【WAV+CUE】
- 林美秀《Lady Pum Pum》[320K/MP3][80.68MB]
- 林美秀《Lady Pum Pum》[FLAC/分轨][412.35MB]
- 椎名林檎《放生会》[320K/MP3][100.7MB]
- 对宁谈墙梗是什么意思 2024对宁谈墙梗介绍
- S14全球总决赛blg战队怎么样 全球总决赛blg战队详细介绍
- S14全球总决赛wbg战队怎么样 全球总决赛WBG战队详细介绍
- 欧洲顶级学府举办原神线下校园巡回,痛巴士大受欢迎
- 《龙腾世纪4》人人喷的垃圾游戏依旧好评?都是假象!
- 又恰烂钱!《龙腾世纪4》《奇异人生》两极分化严重
- [原声大碟]雅尼徐鲤《河西走廊》气势磅礴波澜壮阔[2021][Hi-Res]FLAC
- 刘紫玲2015《温情如歌》[WAV+CUE]