谷歌瀏覽器調(diào)試JavaScript小技巧
谷歌瀏覽器不僅僅可以用來上網(wǎng),對于開發(fā)人員來說,它更像是一款強大的開發(fā)輔助工具。
工欲善其事必先利其器,接下來筆者給大家分享一些Chrome的使用方法。
假如讀者了解如何在Chrome中添加JavaScript斷點,那請繼續(xù)閱讀;否則,自行腦補。
假如有這樣一段代碼:
var a = 1;
function test(){
var a, b, c, d, e;
a = 2;
b = a - 1;
b = 9;
c = 3;
d = 4;
e = (a + b * c) * (a - d);
return e;
}
test();
代碼本身并不重要,重要的是形式。
假如e是我們最終需要的結(jié)果,但是發(fā)現(xiàn)結(jié)果不正確,于是我們在給e賦值的這一行下斷點。
下斷點之后,把鼠標(biāo)移動到某個變量上,稍作停留,Chrome便會提示你該變量此時的值。
但無奈于表達式比較復(fù)雜,僅僅看單個變量的值,沒什么作用??雌饋矶纪φ?,計算完就不對了。
這時候,你很可能想知道(a + b c)這一部分的結(jié)果,別著急,先將表達式選中,然后將鼠標(biāo)移動到選中的區(qū)域上,稍作停留。
Chrome直接告訴你答案了。更有意思的還在后邊。
直接在選中的區(qū)域單擊鼠標(biāo)右鍵,會彈出一個菜單,最上邊兩項分別為:[Add to watch]、[Evaluate in console]。具體對應(yīng)的視圖參考圖片。
所謂watch,可以理解為監(jiān)控,有些表達式比較重要,可能需要在整個調(diào)試過程中,實時監(jiān)控該表達式的值,這時就可以用watch。
舉個例子,我們把斷點設(shè)置在"b = 9;"這一行,然后添加watch:"a - b",值為1。如圖:
點擊下一步,執(zhí)行"b = 9;",也就是說b的值發(fā)生了變化,此時再看看watch:"a - b"的值,為-7。
這樣就達到了實時監(jiān)控的效果,調(diào)試起來更加方便快捷。
接下來再看看console是怎么回事。
console當(dāng)然就是控制臺了,表達式可以直接在控制臺中求值。
比如想知道(a + b c)的結(jié)果,直接copy到控制臺上,回車,結(jié)果就出來了。
等等,好像哪里不對的樣子,憑什么控制臺知道a、b、c的值?
在沒有斷點的情況下,在控制臺中執(zhí)行JavaScript代碼,是面向全局的。也就是說,此時在控制臺中定義一個變量x,這個x的作用域是全局的。
如果在程序中斷的情況下使用控制臺,那么控制臺的作用域面向中斷處的作用域。也就是說,在哪里設(shè)置的斷點(或者是代碼執(zhí)行到了哪里),控制臺的作用域就在哪里。
就本例而言,在全局范圍內(nèi)定義了一個變量a,值為1;同時又在function test作用域定義了一個局部變量a,值為2。在"a = 2;"處下斷點,在控制臺中輸入a,回車,打印出undefined。
因為此時程序在function test內(nèi)部中斷,程序執(zhí)行到了function test中,所以控制臺的作用域也在function test中,因此輸入a訪問的是局部變量a,而此時局部變量a并未賦值,所以結(jié)果為undefined。
這次就先分享這么多,以后遇到給力的繼續(xù)分享,希望對讀者有所幫助。
相關(guān)文章
微信小程序?qū)崿F(xiàn)藍牙設(shè)備搜索及連接功能示例詳解
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)藍牙設(shè)備搜索及連接功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06JS中實現(xiàn)replaceAll的方法(實例代碼)
本文是對JS中實現(xiàn)replaceAll的方法進行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11150行代碼帶你實現(xiàn)微信小程序中的數(shù)據(jù)偵聽
在這篇文章中, 我將用150行代碼, 手把手帶你打造一個小程序也可以使用的偵聽器,感興趣的朋友跟隨小編一起看看吧2019-05-05