箭头函数
(小知识点:全局指向的this内容与module.exports指向的内容相同。)
this指向
普通函数:this指向调用者,没有调用者指向global
箭头函数:没有自己的this,this指向' 声明时(指箭头函数)'外部作用域的this
(注意:作用域以大括号作为界限)
箭头函数写法
极简写法(形参只有一个时,可省略括号,只有一句返回语句时,箭头后面可直接写表达式)
let result = arr.filter(item => item > 5)
箭头函数完整写法=>
let result = arr.filter((item) => {
retrun item > 5
})
ES5写法=>
let result = arr.filter(function(item) {
retrun item > 5
})
let obj = {
name: '张三',
age: 12,
gender: 'male',
sayName: () => {
console.log(this);
}
}
obj.sayName(); // {}
let obj = {
name: '张三',
age: 12,
gender: 'male',
sayName() {
console.log(this.name);
},
}
obj.sayName(); //张三
let obj = {
name: '张三',
age: 12,
gender: 'male',
sayName: function () {
return () => {
console.log(this)
}
},
}
obj.sayName()();
//{ name: '张三', age: 12, gender: 'male', sayName: [Function: sayName] }
let arrowFun = () => {
console.log(this);
}
let obj = {
name: '张三',
age: 12,
gender: 'male',
sayName() {
return arrowFun
}
}
obj.sayName()(); // {}
let obj = {
name: '张三',
age: 12,
}
this.name = 'lisi'
module.exports.gender = 'male'
console.log('全局this', this); //全局this { name: 'lisi', gender: 'male' }
console.log('module.exports', module.exports);
//module.exports { name: 'lisi', gender: 'male' }