1 如何优化 JavaScript 性能
1.1 减少循环中的活动
将语句或赋值放在循环之外
与
var i;
for (i = 0; i < arr.length; i++) {
相比,以下代码性能更好
var i;
var l = arr.length;
for (i = 0; i < l; i++) {
1.2 减少 DOM 访问
与其他语言相比,JavaScript 访问 HTML DOM 非常慢。
如果需要多次访问同一个 DOM 元素,最好只访问一次,并把它作为本地变量来使用:
示例
var obj;
obj = document.getElementById("demo");
obj.innerHTML = "Hello";
1.3 缩减 DOM 规模
HTML DOM中元素的数量少能提高页面加载速度,并加快渲染。
对于提高搜索 DOM(如 getElementsByTagName)时的性能很有帮助。
1.4 避免不必要的变量
不创建不打算存储值的新变量。
如,用
document.getElementById("demo").innerHTML = firstName + " " + lastName
替代
var fullName = firstName + " " + lastName;
document.getElementById("demo").innerHTML = fullName;
1.5 延迟 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>
1.6 避免使用 with
不使用 with 关键词。因为它会降低运行速度,还会混淆 JavaScript 作用域。
2 如何调试 JavaScript
2.0 JavaScript 调试器
所有现代浏览器都有内置的调试器。
通过 F12 键启动浏览器中的调试器,在调试器菜单中选择“控制台”。
内置的调试器可打开或关闭,将错误报告给用户。
我们也可以设置断点(代码执行被中断的位置),在代码执行时检查变量。
2.1 console.log() 方法
我们可以在调试窗口中使用 console.log() 来显示 JavaScript 的值:
示例
<!DOCTYPE html>
<html>
<body>
<h1>My First Web Page</h1>
<script>
a = 5;
b = 6;
c = a + b;
console.log(c);
</script>
</body>
</html>
2.2 设置断点
我们可以在调试窗口的 JavaScript 代码中设置断点。
运行到断点时,JavaScript 将停止运行,以便我们检查 JavaScript 的值。
检查后,我们可以通过取消断点来恢复代码运行。
2.3 debugger 关键词
debugger 关键词会停止 JavaScript 的执行,并调用调试函数。
功能类似于在调试器中设置断点。
将调试器打开后,使用了debugger 关键词的代码会在执行第三行前停止运行。
示例
var x = 15 * 5;
debugger;
document.getElementbyId("demo").innerHTML = x;