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 相关文章推荐
js中关于一个分号的崩溃示例
Nov 11 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
Nov 28 Javascript
jQuery中DOM树操作之复制元素的方法
Jan 23 Javascript
javascript连续赋值问题
Jul 08 Javascript
JQuery datepicker 用法详解
Dec 25 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
Feb 02 Javascript
jQuery如何防止Ajax重复提交
Oct 14 Javascript
前端JS面试中常见的算法问题总结
Dec 23 Javascript
JS对象是否拥有某属性如何判断
Feb 03 Javascript
简单谈谈关于 npm 5.0 的新坑
Jun 08 Javascript
react+redux仿微信聊天界面
Jun 21 Javascript
angular inputNumber指令输入框只能输入数字的实现
Dec 03 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发送邮件类代码附详细说明
2008/07/10 PHP
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
python:print格式化输出到文件的实例
2018/05/14 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python Tensor和Array对比分析
2020/01/08 Python
Python基于execjs运行js过程解析
2020/11/27 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
大学校园活动策划书
2014/02/04 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
技术入股合作协议书
2016/03/21 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers