当前位置: 首页 > 编程笔记 >

ES6基础之展开语法(Spread syntax)

宰父俊民
2023-03-14
本文向大家介绍ES6基础之展开语法(Spread syntax),包括了ES6基础之展开语法(Spread syntax)的使用技巧和注意事项,需要的朋友参考一下

展开语法用"..."进行表示,展开语法将可迭代的对象拆分成独立的值(语法层面展开)。扩展语法通常用于将可迭代的对象的值传递到函数的参数中。今天小编将从以下方面进行介绍:

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

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"

小节

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • JavaScript语法 要学习JavaScript知识,就要先学习它的语法。 JavaScript语法知识借鉴了C语言以及类似于C语言(如Java)的编程语言的语法知识。 区分大小写 与其它编程语言类似的一样,JavaScript也区分大小写,如:变量test与TEST代表两种不同的变量,在JavaScript中常量、固定值量(如PI)、全局变量用大写表示外,其它建议均用小写表示。 <!doct

  • 本文向大家介绍ES6基础之默认参数值,包括了ES6基础之默认参数值的使用技巧和注意事项,需要的朋友参考一下 如果调用函数的过程中,定义的参数缺失,此参数变量的值则会是undefined。怎么给缺失的参数赋值默认值,在ES6之前,没有简洁的语法设置缺失参数的默认值,但是我们一般可以这么编写代码解决缺失参数默认值: 这种写法是不是比较麻烦?默认值的设置是不是不够直观?在ES6中,我们可以用更简洁的语法

  • 基本语法 变量标示符 变量的命名 var _name = null; var $name = null; var name0 = null; 关键字与保留字 JavaScript 在语言定义中保留的字段,这些字段在语言使用中存在特殊意义或功能,在程序编写的过程中不可以当做变量或函数名称使用。无需记忆,报错修改即可。 关键字与保留字可以在 Mozilla 开发者站点找到。 字符敏感 字符串的大小写

  • 本文向大家介绍Javascript基础教程之JavaScript语法,包括了Javascript基础教程之JavaScript语法的使用技巧和注意事项,需要的朋友参考一下 1.区分大小写 javascript中,变量、函数、运算符都区分大小写。 2.弱类型变量 定义变量只用 "var"关键字 3.每行结尾的分号可有可无。 4.括号用于代码块。 代码示例 第一篇文章就先这些吧,后续我们再详细介绍

  • 本文向大家介绍ES6基础之解构赋值(destructuring assignment),包括了ES6基础之解构赋值(destructuring assignment)的使用技巧和注意事项,需要的朋友参考一下 我们经常可以在其他编程语言(如GO语言)中看到多返回值这种特性,因为在很多实际场景中,函数的返回值中,函数的返回值并不只有一个单一的值。ES6之前,并没有可以直接使用语法来实现多返回值的特性。

  • 主要内容:VB.Net中的Rectangle类,标识符,VB.Net关键字VB.Net是一种面向对象的编程语言。在面向对象编程方法中,一个程序由各种通过动作相互作用的对象组成。 对象可能采取的操作称为方法。相同类型的对象被认为具有相同的类型,或者更经常地说成是在同一类中。 考虑一个VB.Net程序结构时,它可以被定义为通过调用彼此的方法进行通信的对象的集合。现在来简单地看看下面的解释:类,对象,方法和实例变量分别是什么意思? 对象 - 对象具有状态和行为。 例如:狗有状