我过滤掉了所有年龄在13到19岁之间的人。它与普通回调函数一起工作:
let peoples = [
{name: "Mohan",age: 65},
{name: "Raj",age: 15},
{name: "Sam",age: 13},
{name: "Tamil",age: 3},
{name: "selva",age: 25},
{name: "siva",age: 16},
{name: "Ram",age: 18},
]
let range = {
lower: 13,
upper : 16
}
let teenagers = peoples.filter(function(people){
return ( people.age >= this.lower && people.age <= this.upper);
},range);
console.log(teenagers);
但是,箭头函数给出了一个空数组:
let peoples = [
{name: "Mohan",age: 65},
{name: "Raj",age: 15},
{name: "Sam",age: 13},
{name: "Tamil",age: 3},
{name: "selva",age: 25},
{name: "siva",age: 16},
{name: "Ram",age: 18},
]
let range = {
lower: 13,
upper : 16
}
let teenagers = peoples.filter((people) =>{
return (
people.age >= this.lower &&
people.age <= this.upper
);
},range);
console.log(teenagers);
如何使用this
访问上下文对象?
这是因为lambda函数(箭头)获得定义它们的位置的上下文,在本例中是Window
,没有lower
或upper
props。只要使用range.upper
和range.lower
而不是this
,应该可以正常工作。