博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6参数处理
阅读量:5884 次
发布时间:2019-06-19

本文共 1873 字,大约阅读时间需要 6 分钟。

1. 默认参数

ES5 中函数的默认参数是 undefined,而在 ES6 中,可以指定默认参数。

默认参数可以是任何类型。

// ES5function sum(a, b){  a = a || 1  // 兜底写法,如果 a 为undefined,则 a 赋值为 1  b = (typeof b !== 'undefined') ?  b : 1 // 检测 b 是否为 undefined,若是则 b 赋值为 1  return a + b}sum()         // 2// ES6 function sum(a = 1,b = 1){  // ES6不需要在函数体内检查,直接在形参设置默认值  return a + b}sum()          // 2复制代码

默认参数特点:

  • 参数手动设置为 undefined 时,依然会进行默认值的赋值。
function sum(a = 1, b = 1){  return a + b}sum(undefined,undefined)  // 2复制代码
  • 每次函数调用,都会创建一个新的参数对象
function push(item, array = []){  array.push(item)  return array}console.log(push(1))  // [1]console.log(push(2))  // [2]// 每次函数调用,都是一个新的 array 默认值 [],所以push(2) 不会在 push(1) 返回的数组上 push复制代码
  • 默认参数可用于后面的默认参数
function sum(a = 1, b = a){  return a + b}sum()       // 2复制代码

2. 剩余参数

ES6可以用 ...来匹配参数的最后几个。

有时候,需要获取arguments倒数几个参数

// ES5 写法function fn(a, b, c, d, e, f){  // 获取第4个参数和之后的所有参数  // 首先需要将 arguments 伪数组转换成数组,3个方法  let argus = Array.prototype.slice.call(arguments)  // let argus = Array.from(arguments)  //方法二  // let argus = [...arguments]  //方法三  return argus.slice(3)  // 截取键值为3以上的所有数组元素}fn(1,2,3,4,5,6)  // [4,5,6] 复制代码
// ES6 写法function fn(a, b, c, d, e, f){  // 获取第4个参数和之后的所有参数  ;[a,b,c,...argus] = arguments// 以[开头的语句需加分号,否则会默认往上一行末尾添加  return argus }fn(1,2,3,4,5,6)  // [4,5,6] 复制代码

... 将传入的靠后的参数变成数组

function sum(message, ...array){    let result = 0    result = array.reduce((pre,value)=>{      return pre + value    }, 0)    return message + result  }sum('结果是',1,2,3,4)   // 结果是 10复制代码

3. 展开运算符(使用模式匹配)

// 用于数组let array = [1,2,3,4,5]let [...array2] = arrayconsole.log(array2)  // [,1,2,3,4,5]let [a,b,...array3] = arrayconsole.log(array3)  // [3,4,5]let [,,...array4] = arrayconsole.log(array4)  // [3,4,5]let array5 = [0,...array,6]console.log(array5)  // [0,1,2,3,4,5,6]let array6 = [...array, ...array2]console.log(array6)  // [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]// 用于对象也是相同的规则复制代码

转载地址:http://chmix.baihongyu.com/

你可能感兴趣的文章
[转]轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统
查看>>
五 数组
查看>>
也谈跨域数据交互解决方案
查看>>
EntityFramework中使用Include可能带来的问题
查看>>
面试题28:字符串的排列
查看>>
css important
查看>>
WPF 实现窗体拖动
查看>>
NULL不是数值
查看>>
Oracle学习笔记之五,Oracle 11g的PL/SQL入门
查看>>
css绘制几何图形
查看>>
结合kmp算法的匹配动画浅析其基本思想
查看>>
Android网络编程11之源码解析Retrofit
查看>>
安全预警:全球13.5亿的ARRIS有线调制解调器可被远程攻击
查看>>
麦子学院与阿里云战略合作 在线教育领军者技术实力被认可
查看>>
正确看待大数据
查看>>
Facebook通过10亿单词构建有效的神经网络语言模型
查看>>
发展大数据不能抛弃“小数据”
查看>>
中了WannaCry病毒的电脑几乎都是Win 7
查看>>
学生机房虚拟化(九)系统操作设计思路
查看>>
nginx报错pread() returned only 0 bytes instead of 4091的分析
查看>>