-1
咖喱功能得到由编译器(某些人)Curried函数被缓存?
下面这个组件有两个按钮,一个调用它返回的onClick处理程序的功能,而另一个则是相同的,但是内联缓存。
据我所知,两者都在做同样的事情,他们在每个render()
调用上创建一个新功能() => this.foo()
。有人说curried函数版本被编译器缓存和优化,所以与内联版本相比有一个好处。我认为它完全一样,写这个的人想要用这个表达式隐藏一个内联函数。
class MyComponent extends Component {
foo =() => console.log('fooo')
getFunction = callback => {
return() => callback();
}
render() {
return <div>
<button onClick={this.getFunction(this.foo)}>curried function</button>
<button onClick={() => this.foo()}>inline function</button>
</div>
}
}
我做了一些Google搜索,但没有找到一个声明的证明/ disproof,你认为什么人?
我可能失去了一些东西,但是......这里这里的钻营?另外,这不是JavaScript(也不是es6) - 你可能想用[tag:jsx]来标记吗? – Amadan
在getFunction()? – webdeb
维基百科:“在数学和计算机科学中,柯里格是一种将函数的评估转化为函数的技术,该函数将多个参数(或一个参数元组)用于评估一系列函数,每个函数都有一个参数”。你的'foo'是一个无用的函数,所以我不能把你的想法卷入到你的想法中。你是否使用了一些“咖喱”的替代含义? – Amadan