亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 14:26:47
字體:
來源:轉載
供稿:網友

上幾篇文章已經為大家介紹了js調試系列的一些基礎知識,這次亂碼兄弟為大家帶來了js斷點與動態調試方法,需要的朋友可以參考下

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

function votePost(n, t, i) {  i || (i = !1);  var r = {   blogApp: currentBlogApp,   postId: n,   voteType: t,   isAbandoned: i  };  $("#digg_tips").css("color", "red").html("提交中...");  $.ajax({   url: "/mvc/vote/VoteBlogPost.aspx",   type: "post",   dataType: "json",   contentType: "application/json; charset=utf-8",   data: JSON.stringify(r),   success: function(n) {    if (n.IsSuccess) {     var i = $("#" + t.toLowerCase() + "_count");     r.isAbandoned ? $(i).html(parseInt($(i).html()) - 1) : $(i).html(parseInt($(i).html()) + 1)    }    $("#digg_tips").html(n.Message)   },   error: function(n) {    n.status > 0 && (n.status == 500 ? $("#digg_tips").html("抱歉!發生了錯誤!麻煩反饋至contact@cnblogs.com") : $("#digg_tips").html(n.responseText))   }  }); }

差不多就這個樣子的。
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/

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久国产视频| 亚洲国产小视频在线观看| 97久久精品人人澡人人爽缅北| 在线国产精品视频| 国产欧美一区二区三区在线看| 欧美成aaa人片免费看| 粉嫩av一区二区三区免费野| 日韩视频免费观看| 中文字幕精品一区二区精品| 动漫精品一区二区| 2020久久国产精品| 日韩精品免费电影| 亚洲欧美在线一区二区| 精品久久久久久久久久久久久| 成人字幕网zmw| 亚洲精品中文字幕女同| 久久久精品电影| 午夜精品一区二区三区在线| 7777kkkk成人观看| 91精品国产色综合久久不卡98口| 亚洲性生活视频| 日韩欧美精品免费在线| 欧美日韩中文字幕综合视频| 国产精品美女久久| 国产成人精品一区二区三区| 欧美激情在线狂野欧美精品| 国产98色在线| 久久99精品久久久久久噜噜| 亚洲国产99精品国自产| 欧美综合国产精品久久丁香| 亚洲石原莉奈一区二区在线观看| 亚洲精品一区二区网址| 国产成人精品综合久久久| 国产精品色悠悠| 亚洲一区二区少妇| 亚洲视频自拍偷拍| 欧洲成人免费aa| 成人网中文字幕| 97国产精品人人爽人人做| 国产精品丝袜视频| 日韩欧美精品网站| 日韩av免费在线播放| 亚洲aa在线观看| 久久久久久亚洲精品不卡| 亚洲天堂日韩电影| 大伊人狠狠躁夜夜躁av一区| 精品久久久久久久久久久久| 精品丝袜一区二区三区| 国产精品视频精品| 国产成人综合亚洲| 欧美日韩综合视频网址| 亚洲va久久久噜噜噜| 亚洲精品国产精品国产自| 国产一区二区三区18| 日韩av在线免费观看| 亚洲精品在线观看www| 69**夜色精品国产69乱| 欧美日韩第一视频| 欧美亚洲另类视频| 亚洲精品97久久| 亚洲午夜性刺激影院| 国产91在线视频| 日韩欧美在线视频日韩欧美在线视频| 欧美日韩亚洲天堂| 日韩精品丝袜在线| 丝袜美腿亚洲一区二区| 国产91色在线|免| 久久久久99精品久久久久| 91中文精品字幕在线视频| 国产精品2018| 日本精品久久中文字幕佐佐木| 亚洲成人黄色网址| 欧美成人免费网| 久久伊人91精品综合网站| 夜夜嗨av色一区二区不卡| 这里只有视频精品| 热久久这里只有| 91精品中国老女人| 国产日韩综合一区二区性色av| 亚洲日本aⅴ片在线观看香蕉| 国产精品久久久久久久久久久久久| 亚洲自拍偷拍视频| 亚洲免费伊人电影在线观看av| 91久久精品国产91久久| 欧美视频在线视频| 亚洲福利视频网| 91欧美激情另类亚洲| 久久手机免费视频| 日韩国产精品亚洲а∨天堂免| 欧美一级视频在线观看| 国产精品夫妻激情| 国产精品久久9| 国产精品视频一区二区三区四| 日韩免费看的电影电视剧大全| 91超碰中文字幕久久精品| 国产精品第一第二| 国产啪精品视频网站| 日韩有码视频在线| 777精品视频| 国产精品永久免费观看| 久久久精品久久久久| 78色国产精品| 7777免费精品视频| 国产精品一区二区性色av| 日韩精品免费综合视频在线播放| 成人国内精品久久久久一区| 亚洲精品电影在线观看| 日韩综合中文字幕| 国产精品久久久久久亚洲调教| 日韩大片在线观看视频| 久久精品一偷一偷国产| 亚洲91精品在线| 欧美激情在线观看视频| 亚洲图中文字幕| 亚洲人高潮女人毛茸茸| 久久视频在线免费观看| 成人欧美一区二区三区黑人孕妇| 亚洲激情视频网| 亚洲全黄一级网站| 成人免费福利视频| 国产精品吊钟奶在线| 亚洲第一视频网站| 欧美日韩成人精品| 成人黄色短视频在线观看| 中文字幕亚洲激情| 777午夜精品福利在线观看| 91九色综合久久| 自拍视频国产精品| 久久综合电影一区| 亚洲欧美日韩区| 精品日韩视频在线观看| 91精品久久久久久久久久久久久| 国产欧美一区二区三区久久| 九九热最新视频//这里只有精品| 色七七影院综合| 日韩欧美国产高清91| 97涩涩爰在线观看亚洲| 欧美一级电影免费在线观看| 波霸ol色综合久久| 国产精品一区二区久久国产| 在线午夜精品自拍| 久久人人爽人人爽爽久久| 2019最新中文字幕| 日韩中文字幕网站| 91情侣偷在线精品国产| 国产日韩欧美视频在线| 国内精品小视频| 韩国福利视频一区| 久久激情视频免费观看| 成人深夜直播免费观看| 77777亚洲午夜久久多人| 中文字幕国产精品久久| 国产精品久久一| 久热爱精品视频线路一| 亚洲欧美www| 国产精品日韩在线观看| 久久久之久亚州精品露出| 欧美激情国产精品| 97成人超碰免| 欧美巨大黑人极品精男| 97超级碰在线看视频免费在线看| 日韩精品在线视频美女| 久久久久亚洲精品成人网小说| 色妞色视频一区二区三区四区|