1、默认值

现在可以在定义函数的时候指定参数的默认值了,而不用像以前那样通过逻辑或操作符来达到目的了。

function sayHello(name){

    //传统的指定默认参数的方式

    var name = name||'hubwiz';

    document.write('Hello '+name);

} 

//运用ES6的默认参数

function sayHello2(name='hubwiz'){

    document.write(`Hello ${name}`);

}

sayHello();  //输出:Hello hubwiz

sayHello('汇智网');  //输出:Hello 汇智网

sayHello2();  //输出:Hello hubwiz

sayHello2('汇智网');  //输出:Hello 汇智网

2、rest参数

rest参数(形式为“...变量名”)可以称为不定参数,用于获取函数的多余参数,这样就不需要使用arguments对象了。

rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

function add(...values) {

   let sum = ; 

   for (var val of values) {

      sum += val;

   } 

   return sum;

} 

add(, , ) //

不定参数的格式是三个句点后跟代表所有不定参数的变量名。比如以上示例中,...values 代表了所有传入add函数的参数。

3、扩展运算符

扩展运算符(spread)是三个点(...)。它好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列。该运算符主要用于函数调用。

它允许传递数组或者类数组直接做为函数的参数而不用通过apply。

var people=['张三','李四','王五']; 

//sayHello函数本来接收三个单独的参数people1,people2和people3

function sayHello(people1,people2,people3){

    document.write(`Hello ${people1},${people2},${people3}`);

} 

//但是我们将一个数组以拓展参数的形式传递,它能很好地映射到每个单独的参数

sayHello(...people);   //输出:Hello 张三,李四,王五  

//而在以前,如果需要传递数组当参数,我们需要使用函数的apply方法

sayHello.apply(null,people);   //输出:Hello 张三,李四,王五 

 4、扩展运算符的应用(常用)

a、合并数组

扩展运算符提供了数组合并的新写法。

var arr1 = ['a', 'b'];  

var arr2 = ['c'];  

var arr3 = ['d', 'e'];  

// ES5 的合并数组  

arr1.concat(arr2, arr3);  

// [ 'a', 'b', 'c', 'd', 'e' ]  

// ES6 的合并数组  

[...arr1, ...arr2, ...arr3]  

// [ 'a', 'b', 'c', 'd', 'e' ]  

 b、与解构赋值结合

扩展运算符可以与解构赋值结合起来,用于生成数组。

const [first, ...rest] = [, , , , ];  

first // 1  

rest // [2, 3, 4, 5]  

const [first, ...rest] = [];  

first // undefined  

rest // []:  

const [first, ...rest] = ["foo"];  

first // "foo"  

rest // []  

如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。

const [...butLast, last] = [, , , , ];  

//  报错  

const [first, ...middle, last] = [, , , , ];  

//  报错  

es6 默认参数、rest参数、扩展运算符的更多相关文章

  1. rest 参数与扩展运算符

    rest 参数与扩展运算符 1.rest 参数 ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了.rest 参数搭配的变量是一个数组 ...

  2. ...扩展运算符+rest参数+call/apply/bind

    之前在set,map里面有提过扩展运算符的概念,但是今天偶然遇到一个问题,类似于扩展运算符的经典用法,突然发现对其了解不是很深,所以再来整理一下扩展运算符的相关知识. 重点:扩展运算符内部调用的是数据 ...

  3. es6 学习小记 扩展运算符 三个点(...)

    参考: es6 扩展运算符 三个点(...) 经常回顾,方能真正掌握. 一.含义 扩展运算符( spread )是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. ...

  4. ES6学习笔记(一)——扩展运算符和解构赋值

    前言 随着前端工程化的快速推进,在项目中使用ES6甚至更高的ES7等最近特性早已不是什么新鲜事.之前还觉得既然浏览器支持有限,那了解一下能看懂就好,然而仅仅了解还是不够的,现在放眼望去,那些成熟框架的 ...

  5. ES6 入门系列 - 函数的扩展

    1函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log( ...

  6. ES6 学习6 数组的扩展

    本章学习要点: 扩展运算符 Array.from() Array.of() 数组实例的 copyWithin() 数组实例的 find() 和 findIndex() 数组实例的 fill() 数组实 ...

  7. es6中参数【默认值,扩展运算符】

    参数默认值 1.普通参数 function info(age,name="grace"){ console.log(name); } info(); //输入:grace 2.对象 ...

  8. ES6躬行记(2)——扩展运算符和剩余参数

    扩展运算符(Spread Operator)和剩余参数(Rest Parameter)的写法相同,都是在变量或字面量之前加三个点(...),并且只能用于包含Symbol.iterator属性的可迭代对 ...

  9. es6可变参数-扩展运算符

    es5中参数不确定个数的情况下: //求参数和 function f(){ var a = Array.prototype.slice.call(arguments); var sum = 0; a. ...

随机推荐

  1. mybatis深入理解(五)-----MyBatis的一级缓存实现详解 及使用注意事项

    0.写在前面 MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上.MyBatis提供了一级缓存.二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高 ...

  2. linux 利用 alias 自定义快捷命令

    例如:alias avi='cd /home/study/goodstudy/goodgoodstudy/english/movie/avi'则后续命令行输入 avi , 就自动执行了  cd xxx ...

  3. PuTTy linux下tomcat服务的相关命令

    一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...

  4. flask中cookie和session设置

    flask中cookie和session介绍   一.cookie: 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户. ...

  5. Docker Nginx部署

    1.下载nginx镜像 docker pull nginx 2.创建nginx配置文件 vim /etc/nginx/nginx.conf user nginx; worker_processes 1 ...

  6. day37 07-Hibernate二级缓存:查询缓存

    查询缓存是比二级缓存功能更强大的缓存.必须把二级缓存配置好之后才能用查询缓存,否则是用不了的.二级缓存主要是对类的缓存/对象缓存.查询缓存针对对象也是可以的(因为功能比二级缓存更强大),而且还可以针对 ...

  7. System V启动脚本启动的服务

    /etc/rc.d/init.d/目录下的内容如下:这些常用的服务器都是System v的服务,要控制System V 的服务,我们可以使用以下命令 #/etc/rc.d/init.d/script  ...

  8. Leetcode50. Pow(x, n)(快速幂)

    实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 ...

  9. CSS(前)篇

    1.1CSS重点总结 1.1.1 选择器 1.1.2 盒子模型 1.1.3 浮动 1.1.4定位 1.2CSS介绍 概念: 层叠样式表或者级联样式表(Cascading Style Sheets) 层 ...

  10. LintCode_372 在O(1)时间复杂度删除链表节点

    题目 给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾).请在在O(1)时间复杂度删除该链表节点.并在删除该节点后,返回表头. 思路 因为O(1)内删除所以 不能从头节点去遍历找他的前驱节点 ...