var ifChecks = function( i )
{
if( i === 23 )
{
// implementation
}
else if ( i === 300 )
{
// implementation
}
else if ...
}
我在javascript代码中有这种long if if chain(应用程序60检查),这个冗长的链条效率低,好像第60次检查作为输入,然后它必须不必要地经过59次检查,所以我想实现像这样。
var implobj = { 23 : handleimpl1,
300 : handleimpl2,
.
.
.
}
var handleImpl = function( i )
{
implobj[i]();
}
有没有比这个可以在javascript中实现的解决方案更好的方法?
注意:输入不是序号,否则我可能使用数组而不是对象。
答案 0 :(得分:7)
我会用你的想法,编码方式略有不同:
var handleImpl = (function() {
var implobj = {
23 : handleimpl1,
300 : handleimpl2,
// ...
defaultImpl: someDefaultFn
}
return function(i) {
(implobj[i] || implobj.defaultImpl)();
};
}());