//1.无参, 不可以省略括号,包含一行表达式可以省略括号{} 和 return
var fn1 = function () { return 8;}
var fn1 = ()=>{ return 8;}
var fn1 = ()=> 8
console.log(fn1())
//2.一个参数, 可以省略括号,包含一行表达式可以省略括号{} 和 return
var fn2 = function (a) { return a * 2;}
var fn2 = a =>{ return a * 2;}
var fn2 = a => a * 2;
console.log(fn2(5))
//3.多个参数
var fn3 = function(a, b) { return a+b;}
var fn3 = (a,b) => { return a+b;}
var fn3 = (a,b) => a+b
console.log(fn3(2,7))
//4.可变参数
var fn4 = function (a, b, ...c) { }
var fn4 = (a, b, ...c) => { }
//5.多条语句不能省略括号 和 return
var fn5 = function (a, b) {
let c = a + b;
return c * 5;
}
var fn5 = (a, b)=> {
let c = a + b;
return c * 5;
}
console.log(fn5(3,7))
//6.如果返回的是对象,需要用小括号括起来
var fn6 = x =>({key : x})
console.log(fn6(5))
//7.箭头函数和匿名函数很相似,但是明显区别是this,箭头函数this指向词法作用域
//非箭头函数 this指向在函数定义的时候确定不了,实际上this指向的是那个调用它的对象
//箭头函数 this的总是指向词法作用域,也就是外层调用者Person
var Person = {
firstName : 'Zhang',
lastName : 'San',
getFullName : function () {
//非箭头函数,打印undefined
/* let fn = function () {
return this.firstName + ' ' + this.lastName;
}*/
//箭头函数,打印Zhang San
let fn = ()=> this.firstName + ' ' + this.lastName;
return fn();
}
};
console.log(Person.getFullName());