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之dhDataGrid Ver2.0.0代码
Jul 01 Javascript
鼠标右击事件代码(asp.net后台)
Jan 27 Javascript
jQuery实现用户注册的表单验证示例
Aug 28 Javascript
javascript删除字符串最后一个字符
Jan 14 Javascript
jQuery实现的输入框选择时间插件用法实例
Feb 28 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
Oct 17 Javascript
JavaScript的设计模式经典之代理模式
Feb 24 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
Jul 04 Javascript
Angular使用Md5加密的解决方法
Sep 16 Javascript
详解Vue项目部署遇到的问题及解决方案
Jan 11 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
Mar 03 Javascript
解决vue打包 npm run build-test突然不动了的问题
Nov 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
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
php数组去重复数据示例
2014/02/25 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
Jquery Uploadify上传带进度条的简单实例
2014/02/12 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
python正则表达式re模块详解
2014/06/25 Python
Python中的高级数据结构详解
2015/03/27 Python
详解Python中的join()函数的用法
2015/04/07 Python
详细介绍Python的鸭子类型
2016/09/12 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
解决python线程卡死的问题
2019/02/18 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
python 如何实现遗传算法
2020/09/22 Python
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
客服专员岗位职责
2014/02/28 职场文书
教师党员公开承诺书
2014/03/25 职场文书
报关报检委托书
2014/04/08 职场文书
医院院务公开实施方案
2014/05/03 职场文书
优秀教师推荐材料
2014/12/16 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL