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 对表格的行和列都能加亮显示
Dec 26 Javascript
jQuery中创建实例与原型继承揭秘
Dec 21 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
Jan 27 Javascript
angularjs实现与服务器交互分享
Jun 24 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
Dec 26 Javascript
基于JavaScript实现无缝滚动效果
Jul 21 Javascript
Vue中计算属性computed的示例解读
Jul 26 Javascript
详解mpvue开发小程序小总结
Jul 25 Javascript
微信小程序新手教程之页面打开数量限制
Mar 03 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
May 27 Javascript
js实现数字从零慢慢增加到指定数字示例
Nov 07 Javascript
jquery实现简单每周轮换的日历
Sep 10 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
世界上第一台立体声收音机
2021/03/01 无线电
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Python3爬虫全国地址信息
2019/01/05 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
python处理document文档保留原样式
2019/09/23 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
10条PHP编程习惯
2014/05/26 面试题
2014社区三八妇女节活动总结
2014/03/01 职场文书
村委会贫困证明范本
2014/09/17 职场文书
大连导游词
2015/02/12 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
Oracle中update和select 关联操作
2022/01/18 Oracle
flex弹性布局详解
2022/03/20 HTML / CSS