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 相关文章推荐
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
Aug 04 Javascript
再论Javascript的类继承
Mar 05 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
Sep 20 Javascript
让table变成exls的示例代码
Mar 24 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
Jan 20 Javascript
javascript实现控制文字大中小显示
Apr 28 Javascript
使用angular帮你实现拖拽的示例
Jul 05 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
Mar 15 Javascript
Vue 实现列表动态添加和删除的两种方法小结
Sep 07 Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 Javascript
Vue 开发必须知道的36个技巧(小结)
Oct 09 Javascript
微信公众号开发之微信支付代码记录的实现
Oct 16 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 XML备份Mysql数据库
2009/05/27 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
nodejs的路径问题的解决
2018/06/30 NodeJs
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
解决Python对齐文本字符串问题
2019/08/28 Python
python爬虫要用到的库总结
2020/07/28 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
巴西手表购物网站:eclock
2019/03/19 全球购物
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
销售经理工作职责范文
2013/12/03 职场文书
简历里的自我评价
2014/01/31 职场文书
个人租房协议书
2014/04/09 职场文书
环保建议书500字
2014/05/14 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python