// 箭头函数 (this指向的是定义箭头函数的上下文)
// 当箭头函数的参数只有一个时,需要用()来包裹,当返回的代码块中只有一行代码可以省略return和大括号
// let fun = ()=> console.log(this) // window
// fun()
// 当返回一个对象时,需要用()包裹
// let fun1 = ()=> {a:1} 报错
let fun1 = ()=> ({a:1})
console.log(fun1()) // {"a":1}
// 箭头函数+解构赋值
let fun2 = ({a,b}) => a+b
console.log(fun2({a:1,b:2})) // 3
// 箭头函数+rest参数+map
let fun3 = (...args)=>args.map((x)=>x*2)
console.log(fun3(1,2,3)) // [2,4,6]
// 箭头函数里面没有arguments,需要用rest参数代替
// let fun4 = ()=> console.log(arguments)
// console.log(fun4(1,2,3))
// 箭头函数+定时器
var name = 'lisa'
let fun4 = ()=>{
let name = 'iu'
setTimeout( ()=>{
console.log(this.name) // 箭头函数的this绑定定义上下文的作用域,因此指向window
},0 )
}
fun4() // lisa
// bind
let fun5 = function() {
return this.age
}
console.log(fun5.call({age:18})) // 18
console.log(fun5.apply({age:20})) // 20
console.log(fun5.bind({age:12})()) // 12
console