- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
谁能解释一下这个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?
在我的情况下,您的 person
与 y
相同。那么 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/
我是一名优秀的程序员,十分优秀!