arrow function

本篇文章是es6学习笔记,将github上的文章翻译并整理一下;

箭头函数在许多现在语言中都已经支持了,javascript在es6当中也终于支持了

  • 下面的代码段,我们用一个参数,返回了一个结果

[1,2,3].map( num=> num * 2 ) 
// <- [2,4,6]

用es5表示

[1, 2, 3].map(function (num) { return num * 2 })
// <- [2, 4, 6]

  • 如果我们需要用到更多的参数,或者不用参数,那么我们需要圆括号将参数包裹起来.

[1,2,3].map(( num,index ) => num*2+index )
//<-[2,5,8,11]

  • 当需要其他代码块,并且只返回一个表达式时我们需要中括号

[1,2,3,4].map(num => {
    var multiplier = 2 + num;
    return num * multiplier
})
// <- [3, 8, 15, 24]

  • 当你运用插入语法时,你也可以添加更多参数

[1, 2, 3, 4].map((num, index) => {
  var multiplier = 2 + index
  return num * multiplier
})
// <- [2, 6, 12, 20]

  • 当我们需要返回一个对象的时候我们需要把表达式包裹在大括号中,只有这样才不会被解析成代码块

[1, 2, 3].map(n => { number: n })
// [undefined, undefined, undefined]

[1, 2, 3].map(n => { number: n, something: 'else' })
// <- SyntaxError

[1, 2, 3].map(n => ({ number: n }))
// <- [{ number: 1 }, { number: 2 }, { number: 3 }]

[1, 2, 3].map(n => ({ number: n, something: 'else' }))
/* <- [
  { number: 1, something: 'else' },
  { number: 2, something: 'else' },
  { number: 3, something: 'else' }]
*/

  • 一个很酷的属性是箭头函数绑定了this上下文的属性

function Timer () {
  this.seconds = 0
  setInterval(() => this.seconds++, 1000)
}
var timer = new Timer()
setTimeout(() => console.log(timer.seconds), 3100)
// <- 3


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    呼呼哥阅读 3,508评论 0 1
  • 远方的城啊 你能否告诉我 在那轻纱遮掩下的 朦胧的城啊 你是否与那近处的城一样 都有着华丽的着装 惊艳的面庞 婀娜...
    虞美人阅读 185评论 0 1
  • 不久前,一个高中生拿着一篇高考英语完形填空来问我,表示不能理解作者表达的意思。看完,我不禁莞尔。的确,对于这个年龄...
    阳阳在奔跑阅读 320评论 4 3
  • 2017-03-24 窗外的风呼呼的刮 最近两周正在面试新员工,加起来见了有七八个了。这是我人生第一次以面试官的身...
    魏费斯阅读 1,891评论 0 0