JavaScript 最佳实践
请勿使用 new Object()
- 请使用 {} 来代替 new Object()
- 请使用 “” 来代替 new String()
- 请使用 0 来代替 new Number()
- 请使用 false 来代替 new Boolean()
- 请使用 [] 来代替 new Array()
- 请使用 /()/ 来代替 new RegExp()
- 请使用 function (){}来代替 new Function()
使用 === 比较
==比较运算符总是在比较之前进行类型转换(以匹配类型)。===运算符会强制对值和类型进行比较:- 在
switch语句中使用严格比较:
// 这条 switch 语句会显示提示框:
var x = 10;
switch(x) {
case 10: alert("Hello");
}
// 这条 switch 语句不会显示提示框:
var x = 10;
switch(x) {
case "10": alert("Hello");
}
避免使用 eval()
eval() 函数用于将文本作为代码来允许。在几乎所有情况下,都没有必要使用它。
因为允许任意代码运行,它同时也意味着安全问题。
令人误解的浮点
JavaScript 中的数字均保存为 64 位的浮点数(Floats)。 所有编程语言,包括 JavaScript,都存在处理浮点值的困难:
var x = 0.1;
var y = 0.2;
var z = x + y // z 中的结果并不是 0.3 而是 0.30000000000000004
// 为了解决上面的问题,请使用乘除运算:
var z = (x * 10 + y * 10) / 10; // z 中的结果将是 0.3
对 JavaScript 字符串换行
JavaScript 允许您把一条语句换行为两行:
var x =
"Hello World!";
但是,在字符串中间来换行是不对的:
var x = "Hello
World!";
如果必须在字符串中换行,则必须使用反斜杠:
var x = "Hello \
World!";
Undefined 不是 Null
在测试非 null 之前,必须先测试未定义:
// 不正确的:
if (myObj !== null && typeof myObj !== "undefined")
// 正确的:
if (typeof myObj !== "undefined" && myObj !== null)
减少循环中的活动
// 差的代码:
var i;
for (i = 0; i < arr.length; i++) {}
// 更好的代码:
var i;
var l = arr.length;
for (i = 0; i < l; i++) {}
循环每次迭代时,坏代码就会访问数组的 length 属性。
好代码在循环之外访问 length 属性,使循环更快。
减少 DOM 访问
与其他 JavaScript 相比,访问 HTML DOM 非常缓慢。 假如您期望访问某个 DOM 元素若干次,那么只访问一次,并把它作为本地变量来使用:
var obj;
obj = document.getElementById("demo");
obj.innerHTML = "Hello";
避免不必要的变量
请不要创建不打算存储值的新变量。 通常您可以替换代码:
var fullName = firstName + " " + lastName;
document.getElementById("demo").innerHTML = fullName;
用这段代码:
document.getElementById("demo").innerHTML = firstName + " " + lastName;
延迟 JavaScript 加载
请把脚本放在页面底部,使浏览器首先加载页面。
脚本在下载时,浏览器不会启动任何其他的下载。此外所有解析和渲染活动都可能会被阻塞。
HTTP 规范定义浏览器不应该并行下载超过两种要素。
一个选项是在 script 标签中使用 defer="true"。defer 属性规定了脚本应该在页面完成解析后执行,但它只适用于外部脚本。
如果可能,您可以在页面完成加载后,通过代码向页面添加脚本:
<script>
window.onload = downScripts;
function downScripts() {
var element = document.createElement("script");
element.src = "myScript.js";
document.body.appendChild(element);
}
</script>
参考内容
首页 > 学习总览 > 开发语言 > JavaScript