<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        js調試系列斷點與動態調試[基礎篇]_javascript技巧

        來源:懂視網 責編:小OO 時間:2020-11-27 21:24:50
        文檔

        js調試系列斷點與動態調試[基礎篇]_javascript技巧

        昨天留的課后練習 1.分析 votePost 函數是如何實現 推薦 的。其實我們已經看到了源碼,只要讀下源碼即可知道他是怎么實現的了。差不多就這個樣子的。ps: 我用的是 sublime text 格式化的代碼,和chrome控制臺格式化后的結果有點不同。也可以試試這個在線格式化工具,效果差不多:Online JavaScript beautifier。簡單讀過代碼后,可以大致知道,這個函數有 3 個參數,第一個是 postId,就是文章ID,第二個是 推薦(digg) 或者 反對(bury)。但是第三個一直沒用到,而且默認值是 false。往下看,他在 #digg_tips 處顯示 "提交中..." 字符串,接著通過 ajax 提交數據給后臺。
        推薦度:
        導讀昨天留的課后練習 1.分析 votePost 函數是如何實現 推薦 的。其實我們已經看到了源碼,只要讀下源碼即可知道他是怎么實現的了。差不多就這個樣子的。ps: 我用的是 sublime text 格式化的代碼,和chrome控制臺格式化后的結果有點不同。也可以試試這個在線格式化工具,效果差不多:Online JavaScript beautifier。簡單讀過代碼后,可以大致知道,這個函數有 3 個參數,第一個是 postId,就是文章ID,第二個是 推薦(digg) 或者 反對(bury)。但是第三個一直沒用到,而且默認值是 false。往下看,他在 #digg_tips 處顯示 "提交中..." 字符串,接著通過 ajax 提交數據給后臺。
        上幾篇文章已經為大家介紹了js調試系列的一些基礎知識,這次亂碼兄弟為大家帶來了js斷點與動態調試方法,需要的朋友可以參考下

        昨天留的課后練習 1. 分析 votePost 函數是如何實現 推薦 的。
        其實我們已經看到了源碼,只要讀下源碼即可知道他是怎么實現的了。

        差不多就這個樣子的。
        ps: 我用的是 sublime text 格式化的代碼,和chrome控制臺格式化后的結果有點不同。
        也可以試試這個在線格式化工具,效果差不多:Online JavaScript beautifier

        簡單讀過代碼后,可以大致知道,這個函數有 3 個參數,第一個是 postId,就是文章ID,第二個是 推薦(digg) 或者 反對(bury),
        但是第三個一直沒用到,而且默認值是 false
        往下看,他在 #digg_tips 處顯示 "提交中..." 字符串,接著通過 ajax 提交數據給后臺。
        返回數據后,如果 n.IsSuccess 是 真 就在對應的 喜歡(#digg_count)或反對(#bury_count)的計數id上 +1,
        不過這里看到如果 isAbandoned 的值是 真 的話,就計數 -1。
        那我們可以猜測第三個參數是撤銷推薦或者反對用的,簡單說就是我點了推薦,但是我現在不想推薦了,可以傳遞第三個參數 true 實現取消推薦的作用。
        我們稍后測試下。
        接著是在 #digg_tips 處顯示服務器返回的 n.Message 信息。
        如果 ajax 發生錯誤,是 500 錯誤就提示 "抱歉!發生了錯誤!麻煩反饋至contact@cnblogs.com" 其他狀態直接提示服務器返回的錯誤信息。
        這就是大致的流程,因為這個函數簡單,所以基本上一眼就看出來了。

        可能有的新人朋友問了,你怎么知道 currentBlogApp, n, t ,i 是什么值呢?
        那我們來進行下一步,動態調試好了。對于編譯過的項目,動態調試是非常有用的手段。
        先定位到 votePost 源碼處,(這個昨天說過了,不太懂的話,再回去看看先。)


        so easy,我們就定位到了源碼。
        接下來我們點下92那個數字,進行下斷點操作。
        為什么不是在91行下斷點呢?
        因為91行是函數聲明部分,沒法下斷點,我們在函數要執行的代碼處下斷點才行。

        看到 91 行的行號變成藍色了,表示這個地方已經下了斷點了。同時,我們可以在右側 Breakpoints 一欄里看到已下的斷點。
        Breakpoints 這個一欄是管理所有斷點的,可以方便的跳轉到對應斷點的位置出,以后常常會用到哦。

        現在下完斷點了,我們回頭點下 推薦。(雖然感覺我在騙推薦,不過我真心沒這么想,當初是隨便找了個按鈕當練習的。)
        當你點 推薦 按鈕的時候,神奇的事情發生了,并沒有運行推薦功能,而是跳到了控制臺 Sources 面板里我們剛剛下的那個斷點處。

        現在,你不僅能在右側 Scope Variables(變量作用域) 一欄處看到當前變量,而且還能把鼠標直接移到任意變量上,就可以查看該變量的值。
        Scope Variables欄目會顯示當前作用域以及他的父級作用域,以及閉包。
        是不是超方便。(我初學閉包的時候,Scope Variables幫了我不少呢。)

        我們進行下一步,按3次 F10 就可以看到這樣的東西。

        我們每按一次 F10 會執行一條語句,剛才按了3次,就是執行到了 $("#digg_tips").css("color", "red").html("提交中...");
        所以我們可以在頁面上看到 #digg_tips 顯示提交中的字樣。
        可是當我們再次按 F10 的時候,發現他一路執行下去,而沒有進入 ajax 內部的回調函數。

        這是個糾結的問題,也是我要重點說的。
        像這種回調函數,特別是異步的,我們要在回調函數內部再次下一個斷點。
        所以我們在 96 行再下個斷點即可,現在我們再點一下 推薦 依然停在了 92 行,我們直接按 F8 就可以在 ajax 的回調函數處斷下了。

        現在,我們就可以調試回調數據了,同時可以發現右側 Scope Variables 多了一個 Closure 的東西,這個就是閉包。
        如果現在理解不了,那就過,這東西要大篇幅介紹,不是三言兩句就能講明白的,反正控制臺很強大就對了。
        在看到閉包的同時,我們也看到 ajax 的返回數據 n,很明顯,我的 IsSuccess 屬性為 false 沒有成功,因為他返回了一個信息 "不能推薦自己的內容"。
        是不是很有意思,動態調試,讓尋找BUG變得 so easy。

        接下來,我們來實驗第三個參數。
        我們在控制臺輸入 votePost(cb_entryId, 'Digg', true); 然后回車。
        同樣停在了92行的斷點處,這個里就不調試了,直接F8進入 ajax 的回調函數出。

        在這里我們非常清楚的看到,當第三個參數為 true 的時候,確實是取消推薦了,同時你可以看到推薦數確實 -1 了,哪怕刷新也一樣。

        本次我們用到了兩個快捷鍵 F10 和 F8,明天詳細介紹,今天先學會基礎調試先。

        課后練習:(提高下難度)
        1. 查看下面評論的 提交評論 按鈕,并找到他的事件。(jQuery 綁定的)
        2. 動態調試這個 提交評論 事件的執行過程。

        如果不會這個練習,推薦看下 《淺談 jQuery 事件源碼定位問題》,有詳細分析哦。

        本文來自:博客園博主 亂碼 的文章。http://www.cnblogs.com/52cik/

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        js調試系列斷點與動態調試[基礎篇]_javascript技巧

        昨天留的課后練習 1.分析 votePost 函數是如何實現 推薦 的。其實我們已經看到了源碼,只要讀下源碼即可知道他是怎么實現的了。差不多就這個樣子的。ps: 我用的是 sublime text 格式化的代碼,和chrome控制臺格式化后的結果有點不同。也可以試試這個在線格式化工具,效果差不多:Online JavaScript beautifier。簡單讀過代碼后,可以大致知道,這個函數有 3 個參數,第一個是 postId,就是文章ID,第二個是 推薦(digg) 或者 反對(bury)。但是第三個一直沒用到,而且默認值是 false。往下看,他在 #digg_tips 處顯示 "提交中..." 字符串,接著通過 ajax 提交數據給后臺。
        推薦度:
        標簽: js javascript 基礎
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久久久亚洲精品美女| 亚洲Av无码国产情品久久| 亚洲综合熟女久久久30p| 亚洲av午夜电影在线观看 | a级成人毛片免费图片| 特黄特色大片免费| yy6080亚洲一级理论| 亚洲免费精彩视频在线观看| GOGOGO免费观看国语| 亚洲中文字幕在线观看| 成全在线观看免费观看大全| 最新免费jlzzjlzz在线播放| 国产精品亚洲二区在线观看| 猫咪免费人成网站在线观看入口| 亚洲精品国产日韩无码AV永久免费网| 久久久久亚洲av无码专区| 91精品免费高清在线| 亚洲国产成人精品无码区在线秒播| 足恋玩丝袜脚视频免费网站| 亚洲视频人成在线播放| 国产视频精品免费视频| 久久亚洲精品中文字幕三区| 特级毛片全部免费播放| 亚洲午夜久久久久久久久电影网| 亚洲国产精品成人综合色在线| 国产免费无遮挡精品视频| 亚洲综合激情视频| 永久免费的网站在线观看| 亚洲中文字幕无码久久精品1| 精品国产麻豆免费人成网站| 亚洲国产91精品无码专区| 伊人免费在线观看| 亚洲成av人片不卡无码| 国产免费直播在线观看视频| 一个人免费视频观看在线www| 亚洲黄色在线网站| 四虎影视永久免费视频观看| 日韩免费的视频在线观看香蕉| 亚洲女初尝黑人巨高清| 国产免费丝袜调教视频| 久久亚洲AV无码精品色午夜|