谈谈神秘的ES6——(三)ES6的函数

混江龙づ霸主 提交于 2020-04-07 10:54:49

谈谈神秘的ES6——(三)ES6的函数

 ES6函数的改变不算太大,都是一些其他语言早就有的功能,而Javascript一直比较欠缺的,比如函数参数默认值,任意参数的表示法,最大的变化应该是支持箭头函数(其他语言称之为LAMBDA表达式),一种对匿名函数的一种简写方式。

箭头函数()=>{}

箭头函数的本质是方法函数的一种简写,不需要function关键字来创建函数,它可以省略return关键字,当只有一个参数是,可以省略(),如果只有一个return,可以省略{}。具体来看看代码:

function square(n){
    return n*n;
}

//等价于

let square = n => n*n;

默认参数

在ES5我们给函数定义参数默认值是怎么样?

function action(num) {
   num = num || 200
   //当传入num时,num为传入的值
   //当没传入参数时,num即有了默认值200
   return num
}

但当,num传入为0的时候就是false, 此时num = 200 与我们的实际要的效果明显不一样。

ES6为参数提供了默认值。在定义函数时便初始化了这个参数,以便在参数没有被传递进去时使用。

function action(num = 200) {
    console.log(num)
}
action() //200
action(300) //300

不定参数(Rest Parameter)

在函数命名参数前添加...三个点表明这是一个不定参数。

这是一个类似C#的params object参数,放在最后一个形参,用来收集剩余的参数。

function pick(obj, ...keys) {
  let result = Object.create(null)
  for (let i = 0, len = keys.length; i < len; i++) {
    result[keys[i]] = object[keys[i]]
  }
  return result
}

其实,它还可以用来展开数组,我们来看一下:

Math.max可接受任意数量的参数并返回最大的那个,但如果传入的是一个数组,则只能使用apply。

console.log(Math.max(11, 2, 3, 12, 43, 904, 3543, 43))
let values = [11, 2, 3, 12, 43, 904, 3543, 43]
console.log(Math.max.apply(Math, values))

使用展开运算符就变得特别简单了。

let values = [11, 2, 3, 12, 43, 904, 3543, 43]
console.log(Math.max(...values))

                                                                                                       

如果想跟着振丹继续学习,可以微信关注【振丹敲代码】(微信号:JandenCoding)

新博文微信同步推送,还附有讲解视频哦~

也可直接扫描下方二维码关注。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!