1 //可变参数 2 (x, y, ...rest)=>{ 3 var i, sum = x + y 4 for (i = 0; i < rest.length; i++) { 5 sum += rest[i] 6 } 7 return sum 8 } 9 10 //如果要返回一个对象就需要括号括起来,因为和函数体{...}有语法冲突11 // x => {foo : x} 报错12 x =>({ foo: x })13 14 15 /*16 this17 箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确定。18 19 箭头函数完全修复了this的指向,this总是指向词法作用域,也就是外层调用者20 */21 var obj = {22 birth: 1990,23 getAge: function (){24 var fn = ()=> new Date().getFullYear() - this.birth //this指向obj对象25 return fn();26 }27 }28 console.log(obj.getAge())29 30 //由于this在箭头函数中已经按照词法作用域绑定了,所以,用call()或者apply()调用箭头函数时,无法对this进行绑定,即传入的第一个参数被忽略31 var objs = {32 birth: 1990,33 getAge: function (year) {34 var fn = (y)=> y - this.birth35 return fn.call({birth:2000}, year)36 }37 }38 console.log(objs.getAge(2015))
// 没有参数的时候
let fn = () => console.log(3)// 只有一个参数的时候
let fn2 = v => console.log(v)// 有多个参数
let fn3 = (v1, v2, v3) => console.log(v1, v2, v3)