箭头函数:定义函数的一种方式
一,定义函数的方式
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()