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实现仿Windows关机效果
Mar 10 Javascript
javascript 特殊字符串
Feb 25 Javascript
有趣的javascript数组定义方法
Sep 10 Javascript
javascipt匹配单行和多行注释的正则表达式
Nov 20 Javascript
node.js中使用q.js实现api的promise化
Sep 17 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
Jun 01 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
Dec 08 Javascript
jQuery实现磁力图片跟随效果完整示例
Sep 16 Javascript
Angular使用ng-messages与PHP进行表单数据验证
Dec 28 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
Jan 08 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 jQuery
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中\r \r\n \t的区别示例介绍
2014/02/08 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
Move.js入门
2017/02/08 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
Python全局变量操作详解
2015/04/14 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Django Model层F,Q对象和聚合函数原理解析
2020/11/12 Python
Python中return函数返回值实例用法
2020/11/19 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
青年创业培训欢迎词
2014/01/10 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
Python中Selenium对Cookie的操作方法
2021/07/09 Python
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers