今天来谈一下箭头函数, es6的新特性

   首先我们来看下箭头函数长什么样子,   

let result = (param1, param2) => param1+param2;

   上述代码 按照以前书写应该是 :

function add(param1, param2){
return param1+param2;
}

  当 只有一个参数时,还可以简写为:

let result = v => 5+v;

  箭头函数不支持 arguments

  当有多个参数时,比如10个参数时, 我们就不能用arguments了,一种方法是 一一列举出来,比较繁琐, 还有一种方法是 用剩余参数表示 如下:

    这里先解释一下 ” 剩余参数 “, MDN这样描述: 如果函数的最后一个命名参数以...为前缀,则在函数被调用时,该形参会成为一个数组,数组中的元素都是传递给该函数的多出来的实参的值。

(param1, param2, ...rest)=>{//code} //...rest类型为数组,不包含param1,param2, rest.length表示剩余参数个数

    arg代表的是 数组[3,6,5]

  之前没用箭头函数写promise时,代码如下

  

function getRankData(){
return getUsers(users)
      .then(function(users){return users[1];})
  .then(function(user){return user.id;})
.then(function(id){return data;})
.catch(function(err){return err.msg;}) }

  用箭头函数简化后,

function getUserRankData(){
return getUsers(users)
.then(users => users[1];)
.then(user => user.id)
.then(id => data)
.then(err => err.msg;);
}

  当没有参数时, 箭头函数 () => {//code} 或者 _ => {//code}

  note: 简单的、单行的、不会复用的函数,建议采用箭头函数。如果函数体较为复杂,行数较多,还是应该采用传统的函数写法。

  当 用箭头函数直接返回一个对象的时候 ()=>{name: 'test'} 会报错 , 需要添加一个括号, () => ({name: 'test'});

  

  this 关键字

    箭头函数内部的this是词法作用域,由上下文确定。

  看到箭头函数 经常和高阶函数一起使用, 如下

    高阶函数有两个特性 : 函数可以作为参数传递, 函数可以作为返回值输出

var arr = [1,3,5,2,0];
var num = arr.map(ele => ele + 1)
.filter(ele => ele > 3)
.reduce((acc, ele) => acc + ele, 0)

  结果为10;

  介绍一下 reduce函数,对数组每个元素执行回调函数,返回值用于下一次计算参数,

    reduce(function(a,b,c,d) , 0);  reduce 有两个参数 一个回调函数,一个参数, 当参数存在时, 即为a 的初始值, 之后a为回调返回的值, b为数组当前的元素, c为当前元素序号值, d为调用reduce的数组。

浅谈 es6 箭头函数, reduce函数介绍的更多相关文章

  1. 浅谈ES6中的Async函数

    转载地址:https://www.cnblogs.com/sghy/p/7987640.html 定义:Async函数是一个异步操作函数,本质上,Async函数是Generator函数的语法糖.asy ...

  2. 浅谈ES6原生Promise

    浅谈ES6原生Promise 转载 作者:samchowgo 链接:https://segmentfault.com/a/1190000006708151 ES6标准出炉之前,一个幽灵,回调的幽灵,游 ...

  3. 浅谈JS中的高级函数

    在JavaScript中,函数的功能十分强大.它们是第一类对象,也可以作为另一个对象的方法,还可以作为参数传入另一个函数,不仅如此,还能被一个函数返回!可以说,在JS中,函数无处不在,无所不能,堪比孙 ...

  4. 浅谈python中的闭包函数

    闭包函数初探 通常我们定义函数都是这样定义的 def foo(): pass 其实在函数式编程中,函数里面还可以嵌套函数,如下面这样 def foo(): print("hello worl ...

  5. 浅谈JS变量声明和函数声明提升

    先来两个问题 很多时候,在直觉上,我们都会认为JS代码在执行时都是自上而下一行一行执行的,但是实际上,有一种情况会导致这个假设是错误的. a = 2; var a; console.log(a); 按 ...

  6. MYSQL优化浅谈,工具及优化点介绍,mysqldumpslow,pt-query-digest,explain等

    MYSQL优化浅谈 msyql是开发常用的关系型数据库,快速.稳定.开源等优点就不说了. 个人认为,项目上线,标志着一个项目真正的开始.从运维,到反馈,到再分析,再版本迭代,再优化… 这是一个漫长且考 ...

  7. python map函数 reduce函数

    Python中map()函数浅析 函数式编程: 更好的描述问题 map函数 怎么理解当传入多个参数list时,map如何运作:    abc函数第一次传入的数据时 (11,44,77),然后(22,5 ...

  8. 浅谈C中操作字符串函数的用法(一)

    按照内核string.h中函数的顺序进行大概的介绍,若干函数会给出一个简单的例子.有不足之处还希望各位看到的留言告知. 一.memcpy: 函数原型:extern void * memcpy(void ...

  9. 【C语言】浅谈可变参数与printf函数

    一.何谓可变参数 int printf( const char* format, ...); 这是使用过C语言的人所再熟悉不过的printf函数原型,它的参数中就有固定参数format和可变参数(用& ...

随机推荐

  1. angular 源码 <一> rotuerLinkActive

    这几篇,查看angular 源码. rotuerLinkActive 是路由的样式设置. 它的值是 css 的一个类.或者几个类. 主要代码如下 @Input() set routerLinkActi ...

  2. was控制台无法停止应用

    问题描述: was控制台无法停止应用,只能通过停止server的方式停止: 代码实现: import org.slf4j.Logger; import org.slf4j.LoggerFactory; ...

  3. SQL Server注入

    1.利用错误消息提取信息 1.1 枚举当前表与列 --' 抛出错误:选择列表中的列 'users.id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中. 发现表名为 'users',存 ...

  4. puml 用于代码注释

    notebook 笔记本 @startuml rectangle sql_decode.py{ object SQLDataset object Name SQLDataset : meta = &q ...

  5. 关于Vue中页面(父组件)下拉,页面中的子组件加载更多数据的实现方法

    一个项目中存在很多这种情况:父组件(页面)中的子组件需要做下拉加载更多的需求,但是这个下拉到底部的动作只能通过监控页面(父组件)来完成 这就需要父子组件之间的通信,代码如下: 1. 建立一个用于父子组 ...

  6. macOS 在终端中使用 adb命令,每次都要source ~/.bash_profile 才生效

    macOS下已经配置好Android开发环境,环境变量也添加了,但是在终端中使用adb命令每次都需要source .bash_profile之后才能识别, 否则就提示  zsh: command no ...

  7. bash shell的ANSI控制

    格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m" 例如:  echo -e "\033[41;36m something here \03 ...

  8. shell code

  9. 2018/7/31-zznuoj-问题 A: A + B 普拉斯【二维字符串+暴力模拟+考虑瑕疵的题意-0的特例】

    问题 A: A + B 普拉斯 在计算机中,数字是通过像01像素矩阵来显示的,最终的显示效果如下:  现在我们用01来构成这些数字 当宝儿姐输入A + B 时(log10(A)<50,log10 ...

  10. 2018web前端面试题总结

      web面试题 css面试 一.css盒模型 css中的盒子模型包括IE盒子模型和标准的W3C盒子模型.border-sizing: border-box, inherit, content-box ...