gpt4 book ai didi

javascript - 我不明白这个 javascript 返回语句。正在使用这个箭头函数

转载 作者:行者123 更新时间:2023-12-04 15:56:58 25 4
gpt4 key购买 nike

谁能解释一下这个javascript语法。我不明白那个返回声明。 “人”是函数的参数吗?如果"is",它从哪里经过?此组件中没有人员变量。至少该返回语句的详细版本也会有所帮助。让我明白

const filterBy = (term) => {
const searchTermLower = term.toLowerCase()
return (person) => Object.keys(person).some(prop =>
person[prop].toLowerCase().indexOf(searchTermLower) !== -1
)
}
const filterPerson = persons.filter(filterBy(searchTerm))

这里 presons 是一个对象数组,搜索词是一个字符串。

const persons=[
{ name: 'abc', number: '123456' },
{ name: 'def', number: '44233' },
{ name: 'xyz', number: '345345' },
{ name: 'npe', number: '12312' }]

稍后我会使用此返回的 filterPerson 进行后续处理。代码运行得很好但是作为返回,这个箭头函数让我感到困惑。如果需要更多数据,我可以更新问题。

最佳答案

称为高阶函数。

你完全理解这意味着什么是正确的:

let increment = x => x+1;

现在假设你有一个函数,它不是像上面那样返回递增的值,而是返回另一个函数,你会怎么写?简单:

let adder = x => y => y+x;

用法:

let adder = x => y => y+x;
let add5 = adder(5);
console.log(add5(9));

这个例子也依赖于闭包的概念:x 是一个闭包(注意当我用 9 调用 add5 并返回 14 时它是如何被记住的),即不同的主题,但不应阻止您掌握高阶函数的含义。

Is "person" an argument to the function? if 'yes', from where it ispassing?

在我的情况下,您的 persony 相同。那么 y 是什么时候通过的呢?答:当我调用add5时,它的值为9。


要准确引用您的示例,您想知道 person 是什么。

示例 1

这里:

[1,2,3].filter(person=>person)

person 的值(value)是什么? 1,2,3对吗?

现在将函数 person=>person 替换为:

示例 2

let filterBy = ()=>person=>person; // Higher order function, just first function doesn't take a parameter
[1,2,3].filter(filterBy())

示例1和示例2的区别在于示例1中我直接编写了函数,示例2中我通过调用filterBy()生成了它。

关于javascript - 我不明白这个 javascript 返回语句。正在使用这个箭头函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68512486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com