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 相关文章推荐
Extjs学习笔记之七 布局
Jan 08 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
Mar 17 Javascript
JS实现商品倒计时实现代码
May 03 Javascript
自写的jQuery异步加载数据添加事件
May 15 Javascript
JavaScript使用replace函数替换字符串的方法
Apr 06 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
Mar 11 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
May 15 Javascript
jQuery的deferred对象使用详解
Sep 25 Javascript
JS实现课堂随机点名和顺序点名
Mar 09 Javascript
JavaScript数组和对象的复制
Mar 21 Javascript
Vue实现点击导航栏当前标签后变色功能
Aug 19 Javascript
Vue页面渲染中key的应用实例教程
Jan 12 Vue.js
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
一个程序下载的管理程序(一)
2006/10/09 PHP
可以在线执行PHP代码包装修正版
2008/03/15 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
javascript css styleFloat和cssFloat
2010/03/15 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
常用的js方法合集
2017/03/10 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
2017/11/27 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
Vue 自定义动态组件实例详解
2018/03/28 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
英国著名的化妆品折扣网站:Allbeauty.com
2016/07/21 全球购物
25岁生日感言
2014/01/13 职场文书
档案检查欢迎词
2014/01/13 职场文书
四年级科学教学反思
2014/02/10 职场文书
健康教育评估方案
2014/05/25 职场文书
技校毕业生自荐信
2014/06/03 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
python3中apply函数和lambda函数的使用详解
2022/02/28 Python
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技