JavaScript的性能优化:加载和执行

 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成。JavaScript 执行过程耗时越久,浏览器等待响应用户输入的时间就越长。浏览器在下载和执行脚本时出现阻塞的原因在于,脚本可能会改变页面或 JavaScript 的命名空间,它们对后面页面内容造成影响。一个典型的例子就是在页面中使用document.write()。例如清单 1
清单 1 JavaScript 代码内嵌示例

创新互联建站专注于淮安企业网站建设,响应式网站建设,购物商城网站建设。淮安网站建设公司,为淮安等地区提供建站服务。全流程按需网站制作,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务

 
 
 
 
  1.  
  2.  
  3.     Source Example 
  4.  
  5.  
  6.     

     

  7.      
  8.         document.write("Today is " + (new Date()).toDateString()); 
  9.      
  10.     

     
  11.  
  12.  

当浏览器遇到 

  •      
  •      
  •      
  •  
  •  
  •     

    Hello world!

     
  •  
  •  
  • 然而这种常规的做法却隐藏着严重的性能问题。在清单 2 的示例中,当浏览器解析到  

  •      
  •      
  •  
  •  
  • 这段代码展示了在 HTML 文档中放置 

    带有 defer 属性的 

  •      
  •         alert("script"); 
  •      
  •      
  •         window.onload = function(){ 
  •             alert("load"); 
  •         }; 
  •      
  •  
  •  
  • 这段代码在页面处理过程中弹出三次对话框。不支持 defer 属性的浏览器的弹出顺序是:“defer”、“script”、“load”。而在支持 defer属性的浏览器上,弹出的顺序则是:“script”、“defer”、“load”。请注意,带有 defer 属性的