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 相关文章推荐
json 定义
Jun 10 Javascript
学习并汇集javascript匿名函数
Nov 25 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
Sep 11 Javascript
jQuery EasyUI中DataGird动态生成列的方法
Apr 05 Javascript
jQuery插件dataTables添加序号列的方法
Jul 06 Javascript
Bootstrap table的使用方法
Nov 02 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
Jan 05 Javascript
详解Vue2.0之去掉组件click事件的native修饰
Apr 20 Javascript
vue bus全局事件中心简单Demo详解
Feb 26 Javascript
vue-router history模式下的微信分享小结
Jul 05 Javascript
基于AngularJs select绑定数字类型的问题
Oct 08 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 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
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
python将人民币转换大写的脚本代码
2013/02/10 Python
python私有属性和方法实例分析
2015/01/15 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
Python Pillow Image Invert
2019/01/22 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
python与idea的集成的实现
2020/11/20 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
就业推荐自我鉴定
2013/10/06 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
农民致富事迹材料
2014/01/23 职场文书
公共场所标语
2014/06/30 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
《司马光》教学反思
2016/02/22 职场文书
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript