1. 程式人生 > 實用技巧 >JavaScript的除錯和優化

JavaScript的除錯和優化

一、常見的錯誤和異常

1、拼寫錯誤

2、訪問不存在的變數:變數名未對應上

3、括號不匹配

4、字串和變數連線錯誤:漏寫加號等

5、等號與賦值混淆:“==”不等於“=”

二、錯誤處理

1、使用alert()和document.write()方法監視變數值

  兩者的區別在於alert()方法在彈出對話方塊顯示變數值的同時,也會停止程式碼的繼續執行,直到使用者點選“確定”按鈕。而document.write()則在輸出值之後依舊會繼續執行程式碼。

2、使用onerror事件找到錯誤

  通過遮蔽瀏覽器本身的程式碼除錯錯誤,使用自己定義的onerror事件,找到並顯示錯誤的具體位置及情況。

 1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 5 <title>onerror</title> 6 <script language="javascript"> 7
window.onerror=function(sMessage,sUrl,sLine){ 8 alert("出錯啦:\n"+sMessage+"\nUrl:"+sUrl+"\n行號:"+sLine); 9 return true; //遮蔽系統事件 10 } 11 </script> 12 </head> 13 <body onload="nonExistent()"> 14 </body> 15
</html>
View Code

3、用try...catch語句找到錯誤

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html>
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 5         <title>onerror</title>
 6         <script language="javascript">
 7            try{
 8                alert("this is an example");
 9                alert(fresheggs);
10            }catch(exception){
11                var sError="";
12                for(var i in exception)
13                     sError+=i+":"+exception[i]+"\n";
14                 alert(sError);
15            }
16         </script>
17     </head>
18     <body>
19     </body>
20 </html>
try...catch使用舉例
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html>
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 5         <title>onerror</title>
 6         <script language="javascript">
 7            try{
 8                alert("this is an example"));    //出現括號不匹配了,但是trycatch不會執行catch模組
 9            }catch(exception){
10                var sError="";
11                for(var i in exception)
12                     sError+=i+":"+exception[i]+"\n";
13                 alert(sError);
14            }
15         </script>
16     </head>
17     <body>
18     </body>
19 </html>
try...catch侷限性

三、使用偵錯程式

1、用Firefox錯誤控制檯除錯

  Firefox的錯誤控制檯是瀏覽器自帶的一個JavaScript偵錯程式,可以通過F12快捷方式開啟。

2、用Microsoft Script Debugger 除錯

  此外掛可以在Microsoft官網免費下載,具體使用方法可以自行百度。此除錯方法可能會存在導致IE瀏覽器死掉的情況,只要重啟瀏覽器就能恢復使用。目前不推薦此除錯方式。

3、用Venkman除錯

  這款是針對Mozilla的指令碼偵錯程式,他的工能很強大,推薦使用這種除錯方式

四、JavaScript優化

  優化的主要目的是為了加快程式碼的下載速度以及執行效率。

1、減緩程式碼下載時間

  1)去除程式碼前後空格、註釋、換行等多餘字元

  2)true和false可以用1和0來代替

  3)undefined、null或者false可以用!來代替

  4)new Array()可以直接用[]代替

  5)長的變數或者函式名可以取縮寫

實用的自動優化小工具:ECMAScript Cruncher、JSMin、Online JavaScript Comressor 等。

2、合理宣告變數

  如果在函式體中,如果沒有特別的需要,儘量不要宣告全域性變數,儘量使用var宣告,從而節省系統資源。

3、使用內建函式縮短編譯時間

  如果有內建函式可以使用,儘量避免使用自己定義的函式。

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html>
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 5         <title>內建函式</title>
 6         <script language="javascript">
 7           function myPower(iNum,n){
 8               var iResult=iNum;
 9               for(var i=1;i<n;i++)
10                   iResult*=iNum;
11               return iResult;
12           }
13           var myDate1=new Date();
14           for(var i=0;i<150000;i++){
15               myPower(7,8);         //自定義方法
16           }
17           var myDate2=new Date();
18           document.write(myDate2-myDate1);
19           document.write("<br>");
20           myDate1=new Date();
21           for(var i=0;i<150000;i++){
22               Math.pow(7,8);        //採用系統內建方法
23           }
24           myDate2=new Date();
25           document.write(myDate2-myDate1);
26         </script>
27     </head>
28     <body>
29     </body>
30 </html>
View Code

4、合理書寫if語句

  在使用if和else語句時,一定要把最有可能的情況放在第一個,並且儘量減少else if 語句的使用,可以用else{if(){}}巢狀的方式替換。

5、最小化語句數量

  將可以壓縮在一起的語句,儘量縮小壓縮在一起。

6、節約使用DOM

  JavaScript對DOM的處理可能是最耗時的操作之一。因此,應當儘量減少DOM的操作,將列表專案在新增文字節點之後再新增。