JavaScript 替代switch的解决办法

内容摘要
这篇文章主要为大家详细介绍了JavaScript 替代switch的简单示例,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记。曾经有人说过,真正好的程
文章正文

这篇文章主要为大家详细介绍了JavaScript 替代switch的简单示例,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记。曾经有人说过,真正好的程序是没有if..else的,当然switch还不如if..else。JS规范里面是禁止使用switch的。命令对象(command object)就完美的解决了这个问题。引用一篇国外的博客提到的:
JavaScript 有着良好的控制流程语句,这些语句往往用花括号包裹着。不过有个例外:switch … case 语句。switch … case 的奇怪之处在于你必须在每个 case 末尾加上关键字 break,以防止流程控制权穿越进入下一个 case 语句中。穿越是指让多条 case 执行的手法,当未遇见预期的 break 时,控制权就自动交到下一句 case 手中。然而,就如同分号与花括号一样,你很有可能会在不经意之间忘了写 break,当这发生时,后期的错误排查就比较痛苦,因为语句本身是没错的。因此,配对地写 case … break 是个好习惯。
我们通常讲,JavaScript 有着优雅的对象字面量与顶级函数,这些都使得特定的方法查询变的非常简单。为方法查询所创建的对象,我们称之为 活动对象(action object) 或 命令对象(command object),它被运用在许多软件设计模式中,包括强大的而有用的命令模式。实例: JS代码如下:

/**
 *  switch 方法
 *
 * @param 
 * @arrange (www.idcnote.com)
 **/
function testSwitch(name) {
switch (name) {
    case '1':
        return 'hack';
        break;
    case '2':
        return 'slash';
        break;
    case '3':
        return 'run';
        break;
    default:
        return false;
        break;
}
}
// 使用命令对象
function testFn(name) {
var names = {
    '1': function() {
        return 'hack';
    },
    '2': function() {
        return 'slash';
    },
    '3': function() {
        return 'run';
    }
};
if (typeof names[name] !== 'function') {
    return false;
}
return names[name]();
}
// 测试结果
var result1 = testSwitch('1');
var result2 = testFn('2');
console.info(result1, result2);

注:关于JavaScript 替代switch的简单示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!