语境
我正在构建一个 Redux 应用程序,并希望click
事件mousemove
处理程序根据应用程序状态进行更改。
为了实现这一点,我计划将一个click
单一mousemove
的处理程序附加到document
. 这些将属于订阅 Redux 存储并知道相关状态的范围。
我看到了两种实现处理程序的策略:
switch
针对相关状态变量使用语句。这switch
必须为每个触发的事件调用。- 每当状态更新时,引用内部(到范围)
scope._clickHandler
和交换其所指对象的属性。scope._moveHandler
问题一:
如果我选择策略 2,我会希望我的mousemove
处理程序大部分时间什么都不做。但是mousemove
经常被解雇!可以绑定到该scope._moveHandler
属性的性能最高的无操作函数是什么?
问题2:
switch
在最好的情况下(w/r/t 问题 1),假设策略 1 中使用的语句必须测试 10 到 100 个案例,策略 2 会比策略 1 更高效吗?
澄清
在这种方法中,当事件触发时,总是会调用一个“委托”函数。该函数将根据状态属性做不同的事情,要么通过匹配 a 中的状态,要么switch
简单地将不同的“委托”函数绑定为状态。
问题 1 询问最佳的无操作“委托人”函数,而问题 2 询问switch
在mousemove
回调中使用大块所导致的性能损失。
如果我们作为一个社区同意@nnnnnn 的直觉,那function(){}
就是它对于无操作来说是最好的,那么我的问题就变成了:
哪个对性能更不利:无操作函数调用的开销,还是switch
块中的相等比较?