箭头函数:定义函数的一种方式


一,定义函数的方式

1.function:

const aaa = function (){
}

2.对象字面量中定义函数:

const obj = {
bbb() {}
}

3.ES6中的箭头函数:

// const ccc=(参数列表)=>{
//
// }
const ccc=()=>{

}

二,箭头函数

1.参数问题

1.1放入两个参数

const sum = (num1,num2) =>{
return num1+num2
}

1.2放入一个参数


参数外的括号可省略


const power = num =>{
return num*num
}

2.代码行数

2.1函数中有多行代码

const test =()=>{
console.log('hello');
console.log('hello');
}

2.2函数中只有一行代码,可简写

const mul =(num1,num2)=>num1*num2

结果:

console.log(mul(20,30))  //600

3.箭头函数this的使用

setTimeout(function (){
console.log(this); //window
},1000)
setTimeout(()=>{
console.log(this); //window
},1000)


箭头函数中的this引用的就是最近作用域中的this
箭头函数中this是如何查找的:向外层作用域中一层层的查找this,直到有this的定义


const obj2={
aaa(){
setTimeout(function (){
console.log(this); //window
},1000)
setTimeout(()=>{
console.log(this); //object对象
},1000)
}
}
obj2.aaa()
const obj3={
aaa(){
setTimeout(function (){
setTimeout(function (){
console.log(this); //window
})
setTimeout(()=>{
console.log(this); //window
})
})

setTimeout(()=>{
setTimeout(function (){
console.log(this); //window
})
setTimeout(()=>{
console.log(this); //obj对象
})
})
}
}
obj3.aaa()