本文介绍五个 JavaScript 开发实用技巧:在表单中仅绑定 submit 事件而非按钮 click,提升可访问性;避免为非锚元素绑定 click 以支持键盘操作;通过缓存数组长度优化 for 循环性能;在简单场景使用匿名函数提高可读性;利用 Array.join 方法替代字符串拼接以改善性能与代码整洁度。
这里整理了五个非常实用的 JavaScript 开发技巧:
仅在<form>元素上绑定submit事件
表单事件绑定规范
在表单中绑定事件处理程序时,应当仅在 <form> 元素上监听 submit 事件,而不应将事件绑定到提交按钮的 click 事件上。
March 指出:虽然这种方法看似合理,但在公司开发中若使用了 Web Flow,一个页面可能包含一个大表单,内部存在多个提交按钮,因此不得不将部分事件处理程序绑定在提交按钮的 click 事件上。
所有可点击元素应使用链接标签
元素点击事件与可访问性
除了锚元素(<a>)外,不应给其他元素绑定 click 事件。这对键盘用户至关重要,因为他们在使用键盘获取元素焦点时可能会遇到困难。
March 补充:个人感觉锚元素应仅用于链接,而功能性操作(例如 Google Reader 的“标记全部为已读”)最好使用 <span> 来标识,并通过快捷键等方式解决可访问性问题。这样做能更好地还原 HTML 元素的语义。
优化简单的for循环结构
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(' ');