避免这样的写法:
var object = ['foo', 'bar'], i;for (i = 0, len = object.length; i <len; i++) { try { // do something that throws an exception } catch (e) { // handle exception } }而使用:
var object = ['foo', 'bar'], i; try { for (i = 0, len = object.length; i <len; i++) { // do something that throws an exception } }catch (e) { // handle exception }41. 为 XMLHttpRequests 设置超时。在一个XHR请求占用很长时间后(比如由于网络问题),你可能需要中止这次请求,那么你可以对XHR调用配套使用 setTimeout()。
var xhr = new XMLHttpRequest (); xhr.onreadystatechange = function () { if (this.readyState == 4) { clearTimeout(timeout); // do something with response data } } var timeout = setTimeout( function () { xhr.abort(); // call error callback}, 60*1000 /* timeout after a minute */ ); xhr.open('GET', url, true); xhr.send();此外,一般你应该完全避免同步的 Ajax 请求。
42. 处理 WebSocket 超时通常,在一个 WebSocket 连接创建之后,如果你没有活动的话,服务器会在30秒之后断开(time out)你的连接。防火墙也会在一段时间不活动之后断开连接。
为了防止超时的问题,你可能需要间歇性地向服务器端发送空消息。要这样做的话,你可以在你的代码里添加下面的两个函数:一个用来保持连接,另一个用来取消连接的保持。通过这个技巧,你可以控制超时的问题。
使用一个 timerID:
var timerID = 0;function keepAlive() { var timeout = 15000; if (webSocket.readyState == webSocket.OPEN) { webSocket.send(''); } timerId = setTimeout(keepAlive, timeout); } function cancelKeepAlive() { if (timerId) { cancelTimeout(timerId); } }keepAlive() 方法应该被添加在webSOcket连接的 onOpen() 方法的最后,而 cancelKeepAlive() 添加在 onClose() 方法的最后。
43. 牢记,。使用 VanillaJS。举例来说,不使用:
var min = Math.min(a,b); A.push(v);而用:
var min = a < b ? a b; A[A.length] = v;44. 编码的时候不要忘记使用代码整洁工具。在上线之前使用JSLint和代码压缩工具(minification)(比如JSMin)。《省时利器:代码美化与格式化工具》45. JavaScript是不可思议的。。总结我知道还有很多其他的技巧,窍门和最佳实践,所以如果你有其他想要添加或者对我分享的这些有反馈或者纠正,请在评论中指出。
引用在这篇文章中,我使用了一些我自己的代码片段,也有一些代码片段来自别人的文章或者论坛:
原文:
转载翻译自: 伯乐在线 - Owen Chen