【ES6基础】展开语法(Spread syntax)

栏目: JavaScript · 发布时间: 6年前

内容简介:明天是元宵佳节,在此小编提前祝大家元宵佳节快乐!今天小编在这里给大家继续介绍ES6的语法糖——展开语法(Spread syntax)。展开语法用"..."进行表示,展开语法将可迭代的对象拆分成单个的值(语法层面展开)。展开语法通常用于将可迭代的对象的值传递到函数的参数中。今天小编将从以下方面进行介绍:
【ES6基础】展开语法(Spread syntax)

明天是元宵佳节,在此小编提前祝大家元宵佳节快乐!今天小编在这里给大家继续介绍ES6的语法糖——展开语法(Spread syntax)。

展开语法用"..."进行表示,展开语法将可迭代的对象拆分成单个的值(语法层面展开)。

展开语法通常用于将可迭代的对象的值传递到函数的参数中。今天小编将从以下方面进行介绍:

  • 函数传参中的应用
  • 数组的相关应用
  • 剩余参数的应用

本篇文章阅读时间预计10分钟

函数传参中的应用

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"复制代码

小节

今天的内容就到这里,展开语法糖是不是特别的酷啊,在日后的开发中,我们尽量使用新的语法糖替代旧的写法。让我们代码看起来更加干净、整洁、易懂。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python for Everyone

Python for Everyone

Cay S. Horstmann、Rance D. Necaise / John Wiley & Sons / 2013-4-26 / GBP 181.99

Cay Horstmann's" Python for Everyone "provides readers with step-by-step guidance, a feature that is immensely helpful for building confidence and providing an outline for the task at hand. "Problem S......一起来看看 《Python for Everyone》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具