es6 剩余参数+ 解构赋值+默认值

es6 正式推出两年多了,给前端小伙伴带来了很多东东,最令自己兴奋的还是箭头函数 =>。有了箭头函数在写js方法时再也不用写function 关键字感觉很爽,虽然只是语法糖但用起来感觉很爽代码整洁多了且不存在变量提升,js 更像一门函数式编程语言了加上它的弱类型的灵活性只要用的小心得体它更能让程序员随心所欲的表达想法,不含水分那种且很优雅。优雅的代码是程序员的追求,在PM  面前,习惯了以效率为先,私下里却追寻着优雅与质量。我写模块习惯于先不问青红皂白的弄出来,PM 问起来时至少有话说,然后就琢磨着怎么写更优雅更健壮。

   后台开发我一直用c# 语言,习惯了linq表达式,习惯了lamda,在写前端代码时总想整点什么。箭头函数配合underscore库(或lodash)有种写后台代码的感觉,思维更连贯过度更平滑。

    不说废话了,切入正题,先摘一段MDN 上关于剩余参数的介绍

剩余参数语法允许我们将一个不定数量的参数表示为一个数组。

语法

function(a, b, ...theArgs) {
  // ...
}

如果函数的最后一个命名参数以...为前缀,则它将成为一个数组,其中从0(包括)到theArgs.length(排除)的元素由传递给函数的实际参数提供。

在上面的例子中,theArgs将收集该函数的第三个参数(因为第一个参数被映射到a,而第二个参数映射到b)和所有后续参数。

剩余参数和 arguments对象的区别

剩余参数和 arguments对象之间的区别主要有三个:

  • 剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。
  • arguments对象不是一个真正的数组,而剩余参数是真正的 Array实例,也就是说你能够在它上面直接使用所有的数组方法,比如 sortmapforEachpop
  • arguments对象还有一些附加的属性 (如callee属性)。
结合上述描述 剩余参数也可用在箭头函数中 ,const   arrayFn=(...[a=1,b=2,c=3])=>a+b+c; 没有任何参数时就用默认值,指定参数时,依次赋值。arrayFn() ,输出6,arrayFn(2,3) 输出8 

你可能感兴趣的:(javascrip)