`
xieye
  • 浏览: 835007 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

简洁的js

    博客分类:
  • PHP
阅读更多

假如有这样一个函数,要求
输入'column1',返回'left';
输入'column2',返回'middle';
输入'column3',返回'right';
可以这样:
function getString(str) {
  switch(str) {
      case 'column1':
        return 'left';
      case 'column2':
        return 'middle';
      case 'column3':
        return 'right';
  }
}

也可以这样
function getString(str) {
    return {column1:'left', column2:'middle', column3:'right'}[str];
}

扩展开来,当输入中有两个参数时可用二维数组实现,
当过度使用时,代码的可读性降低。
对于json的写法,就是简洁的写法时,也可以给属性就是column1等加上引号。

xieye
20071122

 

 

 

 

 

分享到:
评论
6 楼 xieye 2007-11-22  
那就不要在对象里定义函数好了。
只使用在小数据,小对象的情况下,并且里面都是常量。
限制这种技巧的使用范围。
5 楼 cai555 2007-11-22  
搂主不是挑剔你的代码,的确挺简洁的,也很巧妙,可是效率太低,如果不说出来,导致别人代码效率低下怎么办?的确不太适合频繁调用的情况
4 楼 cai555 2007-11-22  
我又试验了这种写法:<br/>
<div class='code_title'>java 代码</div>
<div class='dp-highlighter'>
<div class='bar'> </div>
<ol class='dp-j' start='1'>
    <li class='alt'><span><span>function callfun(key){  </span></span></li>
    <li class=''><span>    ({  </span></li>
    <li class='alt'><span>        'select':donoting,  </span></li>
    <li class=''><span>        'input':donoting,  </span></li>
    <li class='alt'><span>        'calender':donoting,  </span></li>
    <li class=''><span>        'button':donoting,  </span></li>
    <li class='alt'><span>        'text':donoting  </span></li>
    <li class=''><span>    }[key])();  </span></li>
    <li class='alt'><span>}  </span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span>function callfunTr(key){  </span></li>
    <li class=''><span>    <span class='keyword'>if</span><span>(key=='select'){  </span></span></li>
    <li class='alt'><span>        donoting();  </span></li>
    <li class=''><span>    }<span class='keyword'>else</span><span> </span><span class='keyword'>if</span><span>(key=='input'){  </span></span></li>
    <li class='alt'><span>        donoting();  </span></li>
    <li class=''><span>    }<span class='keyword'>else</span><span> </span><span class='keyword'>if</span><span>(key=='calender'){  </span></span></li>
    <li class='alt'><span>        donoting();  </span></li>
    <li class=''><span>    }<span class='keyword'>else</span><span> </span><span class='keyword'>if</span><span>(key=='button'){  </span></span></li>
    <li class='alt'><span>        donoting();  </span></li>
    <li class=''><span>    }<span class='keyword'>else</span><span> </span><span class='keyword'>if</span><span>(key=='text'){  </span></span></li>
    <li class='alt'><span>        donoting();  </span></li>
    <li class=''><span>    }<span class='keyword'>else</span><span>{  </span></span></li>
    <li class='alt'><span>        donoting();  </span></li>
    <li class=''><span>    }  </span></li>
    <li class='alt'><span>}  </span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span>function getkey(i){  </span></li>
    <li class=''><span>    <span class='keyword'>return</span><span> ['select','input','calender','button','text'][i%</span><span class='number'>5</span><span>];  </span></span></li>
    <li class='alt'><span>}  </span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span>function donoting(){  </span></li>
    <li class=''><span>    loop++;  </span></li>
    <li class='alt'><span>}  </span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span>var loop = <span class='number'>0</span><span>;  </span></span></li>
    <li class=''><span>var bdate = <span class='keyword'>new</span><span> Date();  </span></span></li>
    <li class='alt'><span>  </span></li>
    <li class=''><span><span class='keyword'>for</span><span>(var i = </span><span class='number'>0</span><span>; i &lt; </span><span class='number'>100000</span><span>; i++){  </span></span></li>
    <li class='alt'><span>    callfun(getkey(i));  </span></li>
    <li class=''><span>}  </span></li>
    <li class='alt'><span>  </span></li>
    <li class=''><span>var edate = <span class='keyword'>new</span><span> Date();  </span></span></li>
    <li class='alt'><span>alert((edate.getTime() - bdate.getTime())/<span class='number'>1000</span><span>);  </span></span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span><span class='comment'>// 传统的方法</span><span>  </span></span></li>
    <li class=''><span>loop = <span class='number'>0</span><span>;  </span></span></li>
    <li class='alt'><span>bdate = <span class='keyword'>new</span><span> Date();  </span></span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span><span class='keyword'>for</span><span>(var i = </span><span class='number'>0</span><span>; i &lt; </span><span class='number'>100000</span><span>; i++){  </span></span></li>
    <li class=''><span>    callfunTr(getkey(i));  </span></li>
    <li class='alt'><span>}  </span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span>edate = <span class='keyword'>new</span><span> Date();  </span></span></li>
    <li class=''><span>alert((edate.getTime() - bdate.getTime())/<span class='number'>1000</span><span>);  </span></span></li>
</ol>
</div>
这样省略了创建匿名函数,效率提高不少(匿名函数:29s, 内建函数:8.9s),但仍然比if else 低得多(3s左右)
3 楼 xieye 2007-11-22  
function callfun(key)
{
    ({
        a: function()
        {
            alert("a");
        },
        b: function()
        {
            alert("b");
        }
    }[key])();
}

callfun("b");

替楼上格式化,
这样,无论哪个函数被调用到,所有的函数都要被解析一下。
为什么我总是看自己的代码很满意,对别人的代码挑剔?本性。
2 楼 cai555 2007-11-22  
我做了测试:<br/>
<div class='code_title'>java 代码</div>
<div class='dp-highlighter'>
<div class='bar'> </div>
<ol class='dp-j' start='1'>
    <li class='alt'><span><span>function callfun(key){  </span></span></li>
    <li class=''><span>    ({  </span></li>
    <li class='alt'><span>        'select':function(){  </span></li>
    <li class=''><span>              </span></li>
    <li class='alt'><span>        },  </span></li>
    <li class=''><span>        'input':function(){  </span></li>
    <li class='alt'><span>              </span></li>
    <li class=''><span>        },  </span></li>
    <li class='alt'><span>        'calender':function(){  </span></li>
    <li class=''><span>              </span></li>
    <li class='alt'><span>        },  </span></li>
    <li class=''><span>        'button':function(){  </span></li>
    <li class='alt'><span>              </span></li>
    <li class=''><span>        },  </span></li>
    <li class='alt'><span>        'text':function(){  </span></li>
    <li class=''><span>              </span></li>
    <li class='alt'><span>        }  </span></li>
    <li class=''><span>    }[key])();  </span></li>
    <li class='alt'><span>}  </span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span>function callfunTr(key){  </span></li>
    <li class=''><span>    <span class='keyword'>if</span><span>(key=='select'){  </span></span></li>
    <li class='alt'><span>          </span></li>
    <li class=''><span>    }<span class='keyword'>else</span><span> </span><span class='keyword'>if</span><span>(key=='input'){  </span></span></li>
    <li class='alt'><span>          </span></li>
    <li class=''><span>    }<span class='keyword'>else</span><span> </span><span class='keyword'>if</span><span>(key=='calender'){  </span></span></li>
    <li class='alt'><span>          </span></li>
    <li class=''><span>    }<span class='keyword'>else</span><span> </span><span class='keyword'>if</span><span>(key=='button'){  </span></span></li>
    <li class='alt'><span>          </span></li>
    <li class=''><span>    }<span class='keyword'>else</span><span> </span><span class='keyword'>if</span><span>(key=='text'){  </span></span></li>
    <li class='alt'><span>          </span></li>
    <li class=''><span>    }<span class='keyword'>else</span><span>{  </span></span></li>
    <li class='alt'><span>    }  </span></li>
    <li class=''><span>}  </span></li>
    <li class='alt'><span>  </span></li>
    <li class=''><span>var bdate = <span class='keyword'>new</span><span> Date();  </span></span></li>
    <li class='alt'><span>  </span></li>
    <li class=''><span><span class='keyword'>for</span><span>(var i = </span><span class='number'>0</span><span>; i &lt; </span><span class='number'>100000</span><span>; i++){  </span></span></li>
    <li class='alt'><span>    callfun(getkey(i));  </span></li>
    <li class=''><span>}  </span></li>
    <li class='alt'><span>  </span></li>
    <li class=''><span>var edate = <span class='keyword'>new</span><span> Date();  </span></span></li>
    <li class='alt'><span>alert((edate.getTime() - bdate.getTime())/<span class='number'>1000</span><span>);  </span></span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span>bdate = <span class='keyword'>new</span><span> Date();  </span></span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span><span class='keyword'>for</span><span>(var i = </span><span class='number'>0</span><span>; i &lt; </span><span class='number'>100000</span><span>; i++){  </span></span></li>
    <li class=''><span>    callfunTr(getkey(i));  </span></li>
    <li class='alt'><span>}  </span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span>edate = <span class='keyword'>new</span><span> Date();  </span></span></li>
    <li class=''><span>alert((edate.getTime() - bdate.getTime())/<span class='number'>1000</span><span>);  </span></span></li>
    <li class='alt'><span>  </span></li>
    <li class=''><span>function getkey(i){  </span></li>
    <li class='alt'><span>    <span class='keyword'>return</span><span> ['select','input','calender','button','text'][i%</span><span class='number'>5</span><span>];  </span></span></li>
    <li class=''><span>}  </span></li>
</ol>
</div>
两个速度差了十倍,建议如果要频繁调用不要使用JSON这种方式
1 楼 cai555 2007-11-22  
扩展一下可以这么写:
function callfun(key){
	({
		a:function(){
			alert("a");
		},
		b:function(){
			alert("b");
		}
	}[key])();
}
callfun("a");

不过效率低下

相关推荐

    很漂亮的简洁js导航广告代码

    总之,"很漂亮的简洁js导航广告代码"是一个关于使用JavaScript创建美观、动态且易用的网页导航广告栏的实例。它结合了图片、导航元素和滚动效果,为用户提供了一种引人入胜的浏览体验。通过学习和理解这类代码,...

    简洁js控制多图左右滚动切换效果

    纯js实现点击左右按钮图片自动左右平滑滚动,默认5个一组左右滚动,可以... 1、将head中的js以及lanrenzhijia.css样式引入到你的网页中 2、将body中的代码部分拷贝到你需要的地方即可 3、注意图片路径不要错误

    ringcentral-js-concise:用于 RingCentral 的简洁 JavaScript SDK

    RingCentral 的简洁 JavaScript SDK。 安装 节点.js yarn add ringcentral-js-concise 或CDN &lt; script src =" https://unpkg.com/axios@0.18.0/dist/axios.min.js " &gt; &lt;/ script &gt; &lt; script src...

    支持移动触摸设备的简洁js幻灯片插件

    lory是一款支持移动触摸设备的简洁的js幻灯片插件。该幻灯片插件可以通过纯js调用,也可以将该幻灯片插件作为jQuery插件来使用。该幻灯片的过渡动画具有硬件加速功能,并且可以定制是否使用easing效果。

    超简洁的JS日期控件

    总的来说,这个"超简洁的JS日期控件"是一个专注于易用性和效率的JavaScript组件。通过解析`setday.js`的源代码,开发者可以学习到如何使用JavaScript创建自定义的日期选择器,同时`日期控件.html`和`setday.gif`则...

    超简洁的js日期选择控件

    本教程将深入探讨一个“超简洁的js日期选择控件”的实现和使用,帮助开发者快速构建具有此类功能的网页。 一、JavaScript与DOM操作 JavaScript作为客户端脚本语言,负责处理网页的动态效果和交互。在创建日期选择...

    js超简洁表格

    "js超简洁表格"这一主题,就是关于如何利用JavaScript高效、简洁地构建表格的一种技术。JavaScript是一种强大的客户端脚本语言,它允许我们动态地操作HTML元素,包括创建、修改和展示数据表格。 在描述中提到的"超...

    普通简洁计算器js

    简单js计算器,简单明了,搞笑。// 4、定义计算函数 jisuan(),将提取过来的数字字符串转化为数值,并做出相对应的计算, 无参,无返。 function jisuan(){ var num1 = parseFloat(zuobian); var num2 =...

    星级评分JS-简洁美观干净已经去除多余代码

    总的来说,“星级评分JS-简洁美观干净已经去除多余代码”是一个实用的前端项目,它展示了如何用JavaScript和jQuery构建交互式组件。理解并掌握这种技术,将有助于提升网站或应用的用户体验,同时也能锻炼开发者对...

    蓝色简洁的网页计算器js代码

    在这个“蓝色简洁的网页计算器js代码”项目中,我们看到开发者使用JavaScript语言构建了一个功能齐全且设计简洁的计算器。JavaScript是前端开发的重要语言,它使得网页具有动态交互性。 首先,`index.html`是网页的...

    Tab页 代码简洁

    这就是一个基本的、使用简洁JS代码实现的Tab页系统。虽然这个例子中我们使用了jQuery,但同样的逻辑也可以用原生的JavaScript实现,这将使代码更加轻量级,适用于对性能有更高要求的项目。此外,还可以根据需求进行...

    基于BootStrap简洁美观Cron表达式选择器JS插件

    **基于BootStrap简洁美观Cron表达式选择器JS插件**是一款优秀的前端开发工具,专为需要在用户界面中方便地输入或选择Cron表达式的项目设计。Cron表达式是一种广泛用于计划任务调度的语言,它允许设置精确的时间间隔...

    简洁的圆形时钟js代码

    **简洁的圆形时钟js代码**是一款非常实用的前端开发组件,主要利用JavaScript语言实现,设计风格简洁且具有一定的趣味性。它不仅提供了一个可视化的圆形时间显示界面,还具备了切换背景色的功能,同时增加了数字时钟...

    简洁个人导航源码(html+css+js)

    **JavaScript(JS)**为网站提供了动态交互性。在"js"文件夹中,可能有一个名为"script.js"的文件,其中包含了处理用户交互的代码。例如,JavaScript可以用来实现当用户鼠标悬停在链接上时显示预览信息,或者在点击...

    JS简洁的时间日期控件代码.zip

    "JS简洁的时间日期控件代码.zip" 提供了一个独立实现的时间日期选择器,它完全基于原生JavaScript编写,不依赖jQuery或其他第三方库,这使得它具有轻量级和高度自定义的特性。 首先,我们要理解原生JavaScript中的...

    一个简洁的JS日历.rar

    标题 "一个简洁的JS日历.rar" 暗示我们关注的是一个JavaScript实现的日历组件,这个组件设计得既简洁又美观。JavaScript是一种广泛用于网页交互的编程语言,尤其适用于处理用户界面动态效果,比如创建各种视觉特效。...

    白色简洁样式计算器JS代码.zip

    在本资源中,我们拥有的是一个名为"白色简洁样式计算器JS代码.zip"的压缩包,它包含一个可能用于网页开发的JavaScript(JS)代码插件。这个计算器代码以白色和简洁的设计风格为主,旨在为用户提供一种高效且直观的...

    3款简洁的JS日历插件.rar

    3款简洁的JS日历插件,实现网页上的JavaScript日历选择功能,内含有详细的调用说明,上手容易,附带有文档。calendar1调用方法:引入script src="js/calendarDateInput.js" 在calendardateinput.js修改图片的路径。

    简洁的js日历

    **简洁的JS日历插件详解** 在网页开发中,日期选择器是一个常见的功能,用于让用户方便地选取日期。本文将深入探讨一个简洁且实用的JS日历特效,该插件设计精巧,易于定制,适用于多种场景。通过了解其核心原理和...

    js简洁实用的网页计算器代码.zip

    【标题】"js简洁实用的网页计算器代码"指的是一个基于JavaScript实现的网页计算器程序,它提供了基本的数学计算功能,并且设计简洁、易于使用。在网页开发中,这样的计算器可以作为一个交互元素,增强用户在网站上的...

Global site tag (gtag.js) - Google Analytics