我正在学习数组方法,有一件事我不太了解,可能与闭包有关。
首先,这是代码段:
let range = {
minNumber: 20,
maxNumber: 30,
isValid(number) {
return number >= this.minNumber && number < this.maxNumber;
}
};
let numbers = [16, 23, 27, 30, 45];
let filteredNumbers = numbers.filter(range.isValid, range);
console.log(filteredNumbers.length); // 2
console.log(filteredNumbers[0]); // 23
console.log(filteredNumbers[1]); // 27
根据我的理解,通过传递第二个参数,我们将this
绑定到range
,否则只需调用:numbers.filter(range.isValid)
将使this
不确定。但是,由于我们正在使用this
运算符从isValid
上下文中“调用” range
,因此它不应该以任何方式访问.
吗?
还有另一种可行的方法:
numbers.filter(number => range.isValid(number))
这里发生了什么?现在可以突然从this
对象中拾取range
吗?箭头函数没有this
iirc,所以不是。
感谢您事先提供的所有帮助。 :)
我的理解是,当您打电话时