之前的一张海报在Javascript中询问了Function.bind vs Closure:如何选择?
并且部分收到了这个答案,这似乎表明bind应该比闭包更快:
范围遍历意味着,当您要获取存在于不同范围内的值(变量,对象)时,会增加额外开销(代码执行速度变慢).
使用bind,您将调用具有现有范围的函数,因此不会进行范围遍历.
两个jsperfs表明bind实际上比闭包慢得多.
这是作为对上述评论发布的
并且,我决定编写自己的jsperf
那么为什么绑定这么慢(铬+ 70%)?
由于它不是更快并且闭包可以起到相同的作用,应该避免绑定吗?
我想知道bind在React组件中使用和匿名函数之间是否存在性能差异.
具体而言,下列其中一项是否比另一种更高效?
const MyComponent = ({ myHandler }) => {
...
return (
<a onClick={myHandler.bind(this, foo, bar)} ...>
hello world
</a>
);
}
const MyComponent = ({ myHandler }) => {
...
return (
<a
onClick={() => {
myHandler(this, foo, bar)
}
...
>
hello world
</a>
);
}
Run Code Online (Sandbox Code Playgroud)
这个问题与可能的重复不同,因为可能的重复问题的答案集中在内存占用上.