使用命令对象代替switch语句的写法示例

 更新时间:2015年02月28日 11:34:13   投稿:junjie   我要评论
这篇文章主要介绍了使用命令对象代替switch语句的写法示例,JS规范里面是禁止使用switch语句的,使用命令对象可以完美的解决这个问题,需要的朋友可以参考下

曾经有人说过,真正好的程序是没有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),它被运用在许多软件设计模式中,包括强大的而有用的命令模式。

实例:

复制代码 代码如下:

// switch 方法
    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实现youku的视频代码自适应宽度

    javascript实现youku的视频代码自适应宽度

    这篇文章主要介绍了javascript实现youku的视频代码自适应宽度的方法的示例,十分的简单实用,有需要的小伙伴可以参考下。
    2015-05-05
  • js以分隔符分隔数组中的元素并转换为字符串的方法

    js以分隔符分隔数组中的元素并转换为字符串的方法

    下面小编就为大家带来一篇js以分隔符分隔数组中的元素并转换为字符串的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • 详解如何webpack使用DllPlugin

    详解如何webpack使用DllPlugin

    这篇文章主要介绍了详解如何webpack使用DllPlugin,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • javascript实时显示当天日期的方法

    javascript实时显示当天日期的方法

    这篇文章主要介绍了javascript实时显示当天日期的方法,可实时显示当前日期及星期的功能,非常简单实用,需要的朋友可以参考下
    2015-05-05
  • JavaScript验证Email(3种方法)

    JavaScript验证Email(3种方法)

    这篇文章主要介绍了JavaScript验证Email的3种方法,需要的朋友可以参考下
    2015-09-09
  • JavaScrpt中如何使用 cookie 设置查看与删除功能

    JavaScrpt中如何使用 cookie 设置查看与删除功能

    这篇文章主要介绍了JavaScrpt中使用 cookie 设置查看与删除功能的方法,文中通过实例代码给大家介绍了js cookie常用的3个预设函数库,需要的朋友可以参考下
    2017-07-07
  • JavaScript 获得选中文本内容的方法

    JavaScript 获得选中文本内容的方法

    今天希望实现一个,直接在网页上选中文本,点击收藏夹的链接(javascript)即可弹出新窗口(类似“百度搜藏”和“QQ书签”),新窗口中的文本框即显示了选中的文本。
    2009-02-02
  • JS实现标签页效果(配合css)

    JS实现标签页效果(配合css)

    实现的效果是当鼠标移到某一个标签的时候,在下面的内容区显示对应的内容,并且相应标签的颜色需要改变,这样的效果是CSS和JS配合实现的,下面我们就来看看具体代码
    2013-04-04
  • JS实现alert中显示换行的方法

    JS实现alert中显示换行的方法

    这篇文章主要介绍了JS实现alert中显示换行的方法,实例分析了两种实现alert换行的实现技巧,非常简单实用,需要的朋友可以参考下
    2015-12-12
  • layui数据表格实现重载数据表格功能(搜索功能)

    layui数据表格实现重载数据表格功能(搜索功能)

    这篇文章主要介绍了layui数据表格实现重载数据表格功能,以搜索功能为例进行讲解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07

最新评论