JavaScript开发时的五个注意事项


Posted in Javascript onDecember 08, 2007

只在<form>元素上使用submit事件

如果要在form中绑定事件处理程序时,应该只在<form>元素上绑定submit事件,而不是给提交按钮绑定click事件。
March:这个方式固然很好,但是,公司开发时使用了Web Flow,一个页面就一个大form,而里面可能有若干个提交按钮,所以不得不把部分事件处理程序绑定在了提交按钮的click事件上。

可点击的都应该是链接

不要给除锚元素(<a>)以外的元素绑定click事件。这一点对于键盘用户很重要,因为他们在仅通过键盘获取元素焦点时会遇到困难。

March:不过个人感觉锚元素还是应该只用作链接,而一些功能性的操作(比如Google Reader的Mark all as new),最好还是用<span>来标注,accessibility的问题可以通过快捷键等方式解决。这样做可以更好的还原HTML元素的语义。

简单的for循环优化

在你写一个for循环时,有个很简单的技巧能够提高性能。

for ( var i = 0; i < elements.length; ++i ) 
使用下面的语句代替上面的: 
for ( var i = 0, j = elements.length; i < j; ++i ) 

这样可以把元素的个数(elements.length的值)储存在一个变量j中,这样就不必在每次循环时都计算一遍元素的个数。

用匿名函数来作为事件处理程序

尤其是对于短小的函数,创建一个匿名函数会比使用一个命名函数的引用更具可读性。

anchor.onclick = function() { map.goToPosition( home ); return false; } 

March:在较复杂的JavaScript开发时还是使用命名函数效率更高。

使用Array.join代替字符串连接(concatenating strings)

在将很多字符串、变量等连接成一个很长的字符串时,将所有字符串和变量放入一个数组,然后用join方法将他们组成一个长字符串,这样无论从代码可读性还是从性能上都更胜于字符串连接。

var text = 'There are' + elements.length + 'members in the elements array.';  

var text = ['There are', elements.length, 'members in the elements array.'].join(' ');
Javascript 相关文章推荐
让IE6支持min-width和max-width的方法
Jun 25 Javascript
上传的js验证(图片/文件的扩展名)
Apr 25 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
Dec 03 Javascript
详解javascript的变量与标识符
Jan 04 Javascript
JavaScript数组的栈方法与队列方法详解
May 26 Javascript
简单实现JS倒计时效果
Dec 23 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
Jan 18 Javascript
Vue中计算属性computed的示例解读
Jul 26 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
Aug 23 jQuery
详解组件库的webpack构建速度优化
Jun 18 Javascript
js键盘事件实现人物的行走
Jan 17 Javascript
JavaScript 中的无穷数(Infinity)详解
Feb 13 Javascript
JS的递增/递减运算符和带操作的赋值运算符的等价式
Dec 08 #Javascript
javascript数组使用调用方法汇总
Dec 08 #Javascript
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
Dec 08 #Javascript
项目实践之javascript技巧
Dec 06 #Javascript
[原创]后缀就扩展名为js的文件是什么文件
Dec 06 #Javascript
JavaScript 节点操作 以及DOMDocument属性和方法
Dec 06 #Javascript
javascript 常用关键字列表集合
Dec 04 #Javascript
You might like
php中一个有意思的日期逻辑处理
2012/03/25 PHP
jQuery 操作XML入门
2008/12/25 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
js实现登录与注册界面
2017/11/01 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
Python+django实现简单的文件上传
2016/08/17 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
解决python replace函数替换无效问题
2020/01/18 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
介绍一下OSI七层模型
2012/07/03 面试题
英语老师推荐信
2014/02/26 职场文书
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
python实现简单反弹球游戏
2021/04/12 Python
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
k8s部署redis cluster集群的实现
2021/06/24 Redis
Python实现归一化算法详情
2022/03/18 Python
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技