哪一个更有效维护:JavaScript函数引用或布尔+ IF条件?

设想一个任务,其中有一个具有type属性的资源数组。 基于这种type ,需要执行不同的function。 实现这一点的一种方法是通过多个if / else或switch / case条件。

 // at run time (run many times) if (resources[ix].type == 'TYPE_ONE') { runFuctionOne(); } else{ runFuctionTwo(); } 

另一种方法是维护一个像execute这样的属性,它将被分配一个可以满足资源type的函数。 那么你将不需要if / else条件,并可以直接执行它的function,如:

 // at assign time (run once) if (resources[ix].type == 'TYPE_ONE') { resources[ix].execute = runFunctionOne; } else{ resources[ix].execute = runFuctionTwo; } // then at run time (run many times) resources[ix].execute(); 

那么, 哪种方式会更有效率? 有没有更好的办法?

编辑:我对Node.js环境中的解决scheme更感兴趣,而不是浏览器环境。

我认为function图将是一个更好的select。

定义一个全球地图

 var fns = { 'TYPE_ONE' : runFunctionOne, 'TYPE_TWO' : runFunctionTwo }; 

然后使用它

 var fn = fns[resources[ix].type]; if (typeof fn == 'function') { fn() } 

或者使用开关

 var fn; switch (resources[ix].type) { case "TYPE_ONE" : fn = runFunctionOne; break; case '' : // execute code block 2 break; default : // } fn()