此对象仅用于测试:
const item = {
id: 520,
name: 'Item 520',
props: [
{id: 1, name: 'Prop 1'},
{id: 2, name: 'Prop 2'}
]
}
此函数将属性 id 作为参数,并返回函数,该函数从传递给它的 item 中获取具有该 id 的属性。
const getItemPropById = propId => (item => item.props.find(p => p.id === propId))
所以getItemPropById(1)(item)评估{id: 1, name: "Prop 1"}为预期。
getItemPropById.toString() 返回
"propId => (item => item.props.find(p => p.id === propId))". 这里没什么奇怪的。
现在,假设我想要一个返回 id 为 1 的属性的函数。
const getItemPropWithId1 = getItemPropById(1)
此功能将按预期工作,但是:
getItemPropWithId1.toString() 返回
"item => item.props.find(p => p.id === propId)"
它并没有返回
"item => item.props.find(p => p.id === 1)"
因此,如果这是被执行的代码,如何getItemPropWithId1“知道”来代替propId用1,当它叫什么名字?
它使用的变量是否存储在其中的某处?如果是这样,我可以在不调用函数的情况下访问它们,就像我可以访问它的代码一样吗?
慕哥6287543
aluckdog
相关分类