哪一个更有效维护: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()