最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript調試腳本的經驗之談

 更新時間:2008年10月13日 18:31:46   作者:  
隨著用JavaScript編程的深入,你會開始理解那些JavaScript給出的不透明錯誤信息。一旦你理解了你常犯的一般性錯誤,你就會很快知道怎樣避免它們,這樣你寫的代碼中的錯誤將越來越少。

  雖然the_name是一個變量,但是程序還會產生一個提示“the_name is very happy,”的警告對話框。這是因為一旦JavaScript看見引號包圍著某些東西就不再考慮它,所以當你把the_name放在引號里,你就阻止了 JavaScript從內存中查找它。下面是一個不太明顯的此類錯誤的擴展:
  function wakeMeIn3()
  {
   var the_message = "Wake up! Hey! Hey! WAKE UP!!!!";
   setTimeout("alert(the_message);", 3000);
  }
  這里的問題是你告訴JavaScript三秒后執(zhí)行alert(the_message)。但是,三秒后the_message將不再存在,因為你已經退出了函數。這個問題可以這樣解決:
  function wakeMeIn3()
  {
   var the_message = "Wake up!";
   setTimeout("alert('" + the_message+ "');", 3000);
  }
  把the_message放在引號外面,命令“alert('Wakeup!');”由 setTimeout預定好,就可以得到你想要的。這只是一些可能在你的代碼中作祟的很難調試的錯誤。一旦發(fā)現了它們,就有不同的或好或差的方法來改正錯誤。你很幸運,因為你能從我的經驗和錯誤中獲益。
  -------------------------------清除錯誤------------------------------------
  找到錯誤,有時侯雖然很難,卻只是第一步。然后你必須清除錯誤。下面是一些在清除錯誤時應該做的一些事:
  
  首先拷貝你的程序
  有些錯誤很難清除。實際上,有時在根除錯誤時,你會破壞整個程序 - 一個小錯誤使你瘋狂。在開始調試前保存你的程序是確保錯誤不會利用你的最好方法。
  一次修正一個錯誤
  如果你知道有好幾個錯誤,應該修正一個,檢驗其結果,再開始下一個。一次修正許多錯誤而不檢驗你的工作只會招致更多的錯誤。
  警惕迷惑性錯誤
  有時你知道存在一個錯誤,但不真正知道為什么。假設有一個變量“index”,由于某種原因 “index”總比你期望的小1。你可以做下面兩件事中的一件:在那兒坐一會兒,解決它為什么變小了,或只是聳聳肩;在使用“index”之前加1,然后繼續(xù)進行。后一種方法稱為迷惑編程。當你開始思考“究竟是怎么了 - 為什么index是2而不是3呢?好吧...我現在先讓它正常工作,以后再修改錯誤?!睍r,你正在把一塊護創(chuàng)膏布貼到一處潛在的硬傷上。
  迷惑編程可能在短期內有用,但是你可以看到長期的厄運 - 如果你沒有完全理解你的代碼到可以真正清除錯誤的程度,那個錯誤將會回來困擾你。它或者以另一種你不能解決的怪異錯誤的方式回來,或者當下一個可憐的被詛咒的靈魂讀你的代碼時,他會發(fā)現你的代碼非常難以理解。
  尋找小錯誤
  有時侯,對程序員來說,剪切和粘貼代碼的能力是一種很壞的事。通常,你會在一個函數中寫一些 JavaScript代碼,然后把它們剪切和粘貼到另一個函數中。如果第一個函數有問題,那么現在兩個函數都有問題。我并不是說你不應該剪切和粘貼代碼。但是錯誤會以某種方式繁殖,如果你發(fā)現了一個錯誤,你就應該尋找與其相似的其它錯誤。(或者在制作它的若干版本之前確切知道會發(fā)生什么。)變量名拼寫錯誤在一段JavaScript代碼中會突然多次出現 - 在一個地方把the_name錯拼成teh_name,你就有機會在其它地方發(fā)現這個錯誤。
  如果所有其它的方法都失敗了
  如果你正坐在那兒盯著一個錯誤,并且不能指出是怎么回事(或者根本沒有發(fā)現錯誤,但是因為程序不能正確運行,你知道存在錯誤),你最好從計算機前走開。去讀一本書,在角落散散步,或者拿一杯可口的飲料 - 做些事,任何事,但不要去想程序或問題。這種技術在某種情況下叫做“醞釀”,效果非常好。在你稍做休息和放松后,再試著找出錯誤。你會得到一幅比較清晰的景象?!搬j釀”起作用是因為它使你從思維混亂中解脫出來。如果沿著一條錯路走太遠,你有時會發(fā)現無法轉身。這種情況下最好開辟一條新路。我知道這會令人發(fā)火,但確實有效。真的!
  如果上面的方法還不成功...
  請求別人的幫助。有時你的思想會形成定式,只有換一種眼光才能洞察問題之所在。在結構化編程環(huán)境中,程序員們定期地互相復查別人的代碼。這可以適當地叫做“代碼復查”,不僅可以幫助消除錯誤,還可以得到更好的代碼。不要怕把你的 JavaScript代碼給別人看,它會使你成為更好的JavaScript程序員。
  
  但是消除錯誤的絕對最好的辦法是...
  一開始就創(chuàng)建沒有錯誤的代碼。
  -------------------------------創(chuàng)建沒有錯誤的代碼---------------------------------------
  編好程序的關鍵是程序是寫給人的,不是寫給計算機的。如果你能明白其他人或許會閱讀你的 JavaScript,你就會寫更清晰的代碼。代碼越清晰,你就越不容易犯錯誤。機靈的代碼是可愛的,但就是這種機靈的代碼會產生錯誤。最好的經驗法則是 KISS,即Keep It Simple,Sweetie(保持簡單,可愛)。另一個有幫助的技術是在寫代碼之前作注釋。這迫使你在動手之前先想好。一旦寫好了注釋,你就可以在其下面寫代碼。
  下面是一個用這種方法寫函數的例子:
  第一步:寫注釋
  第二步:填充代碼
  這種先寫注釋的策略不僅迫使你在寫代碼前思考,而且使編碼的過程看起來容易些 - 通過把任務分成小的,易于編碼的各個部分,你的問題看起來就不太象珠穆朗瑪峰,而象一群令人愉悅的起伏的小山。
  最后... 總以分號結束你的每一條語句。
  雖然并不是嚴格必需,你應該養(yǎng)成以分號結束每一條語句的習慣,這樣可以避免這行后面再有代碼。忘了加分號,下一行好的代碼會突然產生錯誤。把變量初始化為“var”,除非你有更好的理由不這樣做。用“var”把變量局域化可以減少一個函數與另一個不相關函數相混淆的機會。
  好了,既然你已經知道了如何編碼,下面就讓我們學習怎樣使
  你的JavaScript快速運行。>>
  ---------------------------------------------------------
  按速度優(yōu)化JavaScript代碼
  1.限制循環(huán)內的工作量
  2.定制if-then-else語句,按最可能到最不可能的順序
  3.最小化重復執(zhí)行的表達式

相關文章

  • js模仿html5 placeholder適應于不支持的瀏覽器

    js模仿html5 placeholder適應于不支持的瀏覽器

    html5原生支持placeholder,對于不支持的瀏覽器(ie)可用js模擬實現,不要走開,接下來為您詳細介紹實現方法
    2013-01-01
  • javascript中encodeURI和decodeURI方法使用介紹

    javascript中encodeURI和decodeURI方法使用介紹

    encodeURI和decodeURI是成對來使用的,因為瀏覽器的地址欄有中文字符的話,可以會出現不可預期的錯誤,所以可以encodeURI把非英文字符轉化為英文編碼,decodeURI可以用來把字符還原回來
    2013-05-05
  • JS 將字符串中指定字符全局替換的方法

    JS 將字符串中指定字符全局替換的方法

    JavaScript 中的 replace() 方法用于將字符串或其中的子字符串替換為指定字符,或替換一個與正則表達式匹配的子串,這篇文章主要介紹了JS 將字符串中指定字符全局替換,需要的朋友可以參考下
    2023-07-07
  • 判斷一個變量是數組Array類型的方法

    判斷一個變量是數組Array類型的方法

    JavaScript中如何判斷一個變量是數組Array類型呢?本文向大家提供一個比較不錯的方法,可以說是無懈可擊了
    2013-09-09
  • 原生js實現彈跳小球

    原生js實現彈跳小球

    這篇文章主要為大家詳細介紹了原生js實現彈跳小球,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 解決layer彈層遮罩擋住窗體的問題

    解決layer彈層遮罩擋住窗體的問題

    今天小編就為大家分享一篇解決layer彈層遮罩擋住窗體的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 用JavaScript和jQuery實現瀑布流

    用JavaScript和jQuery實現瀑布流

    本篇文章主要介紹了用JavaScript和jQuery實現瀑布流的方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • JavaScript 閉包深入理解(closure)

    JavaScript 閉包深入理解(closure)

    最近在網上查閱了不少Javascript閉包(closure)相關的資料,寫的大多是非常的學術和專業(yè)。對于初學者來說別說理解閉包了,就連文字敘述都很難看懂。撰寫此文的目的就是用最通俗的文字揭開Javascript閉包的真實面目。
    2009-05-05
  • layui 監(jiān)聽表格復選框選中值的方法

    layui 監(jiān)聽表格復選框選中值的方法

    今天小編就為大家分享一篇layui 監(jiān)聽表格復選框選中值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Javascript 異步加載詳解(瀏覽器在javascript的加載方式)

    Javascript 異步加載詳解(瀏覽器在javascript的加載方式)

    本文總結一下瀏覽器在 javascript 的加載方式,需要的朋友可以參考下
    2012-05-05

最新評論

庆云县| 北川| 汝南县| 临潭县| 彰化市| 衡阳市| 六安市| 贺兰县| 揭西县| 鄂温| 公主岭市| 木里| 视频| 广灵县| 宝清县| 武义县| 宁武县| 无极县| 朝阳区| 延川县| 高台县| 噶尔县| 洛南县| 龙里县| 贵港市| 丰城市| 双鸭山市| 荥经县| 新兴县| 海晏县| 铜川市| 南川市| 德兴市| 沙坪坝区| 太仆寺旗| 吉木萨尔县| 崇文区| 兴城市| 乌苏市| 泗阳县| 温宿县|