javascript两段代码,两个小技巧


Posted in Javascript onFebruary 04, 2010

第一段代码就是强调一下这个用法,我在我的项目中使用了一个switch,后来我发现这样的代码好丑,于是我就写成||&&形式的, 后来测试性能的时候,发现性能竟然上了一个数量级,可见这种写法在某些情况下可以增加性能,但是我并不确定是何种情况才能提高性能,因为我测试在通常情况下switch和||&&的性能是差不多的.
原来的代码:

switch(this.now_char=this.str.charAt(this.index)){ 
case "/": 
if(this.handleNote()) continue;else this.str2+=this.now_char; 
break; 
case "\"": 
case "\'": 
if(this.handleStr()) continue;else this.str2+=this.now_char; 
break; 
case "\n": 
if(this.handleLine()) continue;else this.str2+=this.now_char; 
break; 
case "{": 
case "}": 
if(this.handleDepth()) continue;else this.str2+=this.now_char; 
break; 
case ":":if(this.handleJson()) continue;else this.str2+=this.now_char;break; 
default: 
if(this.handleKeyword()) continue;else this.str2+=this.now_char; 
break; 
}

改写后的代码,功能当然是一样的 view sourceprint?1 (this.now_char=="/"&&(this.handleNote()||(this.str2+=this.now_char)))||
((this.now_char=="\""||this.now_char=="\'")&&(this.handleStr()||(this.str2+=this.now_char)))||
(this.now_char=="\n"&&(this.handleLine()||(this.str2+=this.now_char)))|| ((this.now_char=="{"||this.now_char=="}")&&(this.handleDepth()||(this.str2+=this.now_char)))||
(this.handleKeyword()||(this.str2+=this.now_char))
我嚼的第二种写法更简洁点,||&&还有很多用处,可以看那篇文章的介绍
第二段代码是利用了一个特性: (ele=document.createElement("div")) ;//这个表达式会返回一个dom元素,赋值的同时会把值返回给外边的括号
于是出来下面这段代码 :
var mixin=function(target,options){ 
for(var i in options){ 
target[i]=options[i] 
} 
} 
var ele=null; 
mixin(ele=document.createElement("div"),{ 
id:"aa", 
className:"bb", 
innerHTML:"sss" 
}) 
document.body.appendChild(ele) 
debug(ele.id)//aa 
debug(ele.className)//bb 
debug(ele.innerHTML)//sss

这段代码是因为我实在厌烦了建立一个dom元素的时候的一大堆语句:
var ele=document.createElement("div") 
ele.id="aa"; 
ele.className="aa" 
ele.innerHTML="sss"

等等等等,好烦啊.
于是出来了上面的代码.
用上面的原理还可以这样写代码 (ele=document.createElement("div")).className="aa"; 感觉是不是节省了一点空间呢,上面这句话节省了一个变量名,呵呵.
Javascript 相关文章推荐
jQuery中的常用事件总结
Dec 27 Javascript
自定义jQuery选项卡插件实例
Mar 27 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
Mar 10 Javascript
简单谈谈node.js 版本控制 nvm和 n
Oct 15 Javascript
JS常用函数和常用技巧小结
Oct 15 Javascript
javascript实现非常简单的小数取整功能示例
Jun 13 Javascript
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 jQuery
AngularJS select加载数据选中默认值的方法
Feb 28 Javascript
vue-cli3 配置开发与测试环境详解
May 17 Javascript
layui 监听select选择 获取当前select的ID名称方法
Sep 24 Javascript
jQuery实现鼠标滑动切换图片
May 27 jQuery
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
Sep 17 Javascript
JavaScript面向对象之静态与非静态类
Feb 03 #Javascript
JavaScript 学习笔记(十六) js事件
Feb 01 #Javascript
js左侧多级菜单动态的解决方案
Feb 01 #Javascript
javascript 三种编解码方式
Feb 01 #Javascript
对字符串进行HTML编码和解码的JavaScript函数
Feb 01 #Javascript
javaScript 关闭浏览器 (不弹出提示框)
Jan 31 #Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
Jan 31 #Javascript
You might like
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
转PHP手册及PHP编程标准
2006/12/17 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python如何求解两数的最大公约数
2018/09/27 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python将时分秒转换成秒的实例
2019/12/07 Python
Python换行与不换行的输出实例
2020/02/19 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
简约控的天堂:The Undone
2016/12/21 全球购物
悬挂训练绳:TRX
2017/12/14 全球购物
老师给学生的表扬信
2014/01/17 职场文书
机关财务管理制度
2014/01/17 职场文书
手机促销活动方案
2014/02/05 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
奖学金个人总结
2015/03/04 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers