SOURCE

// 箭头函数 (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 命令行工具 X clear

                    
>
console