使用命令对象代替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);

相关文章

  • JS实现浏览器点击下载图片功能案例分析【亲测有效】

    JS实现浏览器点击下载图片功能案例分析【亲测有效】

    这篇文章主要介绍了JS实现浏览器点击下载图片功能,对比分析了同源与不同源两种解决方案,并以实际案例形式分析了不同源情况下针对文件点击下载的具体实现技巧与相关注意事项,需要的朋友可以参考下
    2023-04-04
  • JavaScript使用cookie记录临时访客信息的方法

    JavaScript使用cookie记录临时访客信息的方法

    这篇文章主要介绍了JavaScript使用cookie记录临时访客信息的方法,涉及javascript操作cookie的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 探索JavaScript中私有成员的相关知识

    探索JavaScript中私有成员的相关知识

    这篇文章主要介绍了探索JavaScript中私有成员的相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • js手动播放图片实现图片轮播效果

    js手动播放图片实现图片轮播效果

    这篇文章主要为大家详细介绍了js手动播放图片实现图片轮播效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • ES6学习教程之Promise用法详解

    ES6学习教程之Promise用法详解

    这篇文章主要给大家介绍了关于ES6学习教程之Promise用法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • js实现点击图片将图片地址复制到粘贴板的方法

    js实现点击图片将图片地址复制到粘贴板的方法

    这篇文章主要介绍了js实现点击图片将图片地址复制到粘贴板的方法,涉及js操作节点的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • javascript实现放大镜功能

    javascript实现放大镜功能

    这篇文章主要为大家详细介绍了javascript入门之实现放大镜功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法

    BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法

    这篇文章主要介绍了BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • javascript间隔刷新的简单实例

    javascript间隔刷新的简单实例

    这篇文章介绍了javascript间隔刷新的简单实例,有需要的朋友可以参考一下
    2013-11-11
  • 提高网站信任度的技巧

    提高网站信任度的技巧

    网站信任度:一方面指浏览者对于站点的信任程度,另一方面指搜索引擎对于网站的信任值(TrustRank),网站信任度对于企业站点更为重要.在得到更高信任度的同时,流量更容易转化为实在的收入.
    2008-10-10

最新评论