3.5.2不可预见错误
对不可预见或者因浏览器、脚本解析器BUG造成的难以解决的错误需要进行捕捉处理,如:
try{undefined
xmlhttp.open(“GET”,url,NOT_ASYNC);
}catch(e){undefined
console.log(e.description);
}
【说明】:对捕捉到的错误一般情况必须给出反馈处理,例如console.log(),除非有必要提醒用户,否则不应该使用alert()。
4 JavaScript其他规范
以下规范,除了说明为建议、格式外,均为必须遵循的原则:
(1) eval是恶魔。eval 是JavaScript中最容易被滥用的方法,避免使用它。
(2) 不要给setTimeout或者setInterval 传递字符串参数,应该使用函数参数。
(3) this仅在对象构造器, 方法, 闭包中使用。
this 的语义很特别。 有时它引用一个全局对象(大多数情况下),调用者的作用域,DOM 树中的节点(添加事件处理函数时), 新创建的对象(使用一个构造器),或者其他对象(如果函数被call()或apply())。使用时很容易出错。
【说明】:在内嵌函数想要使用外层函数的调用者,必须将外层调用者赋值给一个变量,通常是self。
(4) 不要使用with(){}。
(5) 千万不要修改内置对象, 如Object.prototype 和 Array.prototype 的原型;
(6) 使用 join() 来创建字符串。
通常是这样使用的,但这样在 IE 下非常慢:
function listHtml(items) {undefined
var html = '';
for (var i = 0, len = items.length; i < len; ++i) {undefined
if (i > 0) {undefined
html += ', ';
}
html += itemHtml(items[i]);
}
html += '';
return html;
}
可以用下面的方式:
function listHtml(items) {undefined
var html = [];
for (var i = 0, len = items.length; i < len; ++i) {undefined
html[i] = itemHtml(items[i]);
}
return '' + html.join(', ') + '';
}
【说明】:即用数组作为字符串构造器, 然后通过join('') 转换成字符串。不过由于赋值操作快于数组的 push(), 所以尽量使用赋值操作.
【参考文献】
[1] JavaScript编程规范. http://wenku.baidu.com/view/f3a4cde95ef7ba0d4a733b38.html
[2] Google JavaScript 编码规范指南. http://wenku.baidu.com/view/3a045b66b84ae45c3b358c18.html?re=view
[3] js编码规范. http://wenku.baidu.com/view/ccd97ba20029bd64783e2c0e.html
[4] javascript编程规范. http://wenku.baidu.com/view/b6e6a7d376eeaeaad1f3301e.html