카레 기능은 컴파일러 (어떤 남자)카레 드 함수는 캐시됩니까?
이 구성 요소는 아래에, 다른 하나는 동일하지만 인라인을한다, 사람은 온 클릭 핸들러를 반환하는 함수를 호출, 두 개의 버튼이 캐시됩니다.
내 지식에 따르면, 둘 다 똑같은 일을하고 있으며, 각 render()
호출에 새로운 기능 () => this.foo()
가 생성됩니다. 누군가는 카레 기능 버전이 컴파일러에 의해 캐싱되고 최적화되었으므로 인라인 버전에 비해 이점이 있다고했습니다. 나는 그것과 똑같은 것과 이것을 쓴 사람이 그 표현식으로 인라인 함수를 은폐하고 싶다고 생각한다.
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>
}
}
나는 인터넷 검색을했는데 성명을 증명할 수는 없었다. 어떻게 생각하니?
내가 뭔가를 누락 될 수 있습니다,하지만 ... 어디 태닝이 여기에? 또한 JavaScript (또는 es6)가 아니므로 [tag : jsx] 태그를 지정할 수도 있습니다. – Amadan
getFunction()에서? – webdeb
위키 피 디아 출신 : "수학과 컴퓨터 과학에서, 커링은 여러 인수 (또는 인수 튜플)를 사용하여 함수의 평가를 각 인수가 하나 인 함수의 순서로 평가하는 기술입니다." 당신의'foo'는 무효 함수입니다. 그래서 저는 여러분이 currying이 어떻게 행해지는지 생각해 볼 수 없습니다. "currying"의 다른 의미를 사용하고 있습니까? – Amadan