谷歌瀏覽器調(diào)試JavaScript小技巧
谷歌瀏覽器不僅僅可以用來(lái)上網(wǎng),對(duì)于開發(fā)人員來(lái)說,它更像是一款強(qiáng)大的開發(fā)輔助工具。
工欲善其事必先利其器,接下來(lái)筆者給大家分享一些Chrome的使用方法。
假如讀者了解如何在Chrome中添加JavaScript斷點(diǎn),那請(qǐng)繼續(xù)閱讀;否則,自行腦補(bǔ)。
假如有這樣一段代碼:
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é)果不正確,于是我們?cè)诮oe賦值的這一行下斷點(diǎn)。

下斷點(diǎn)之后,把鼠標(biāo)移動(dòng)到某個(gè)變量上,稍作停留,Chrome便會(huì)提示你該變量此時(shí)的值。

但無(wú)奈于表達(dá)式比較復(fù)雜,僅僅看單個(gè)變量的值,沒什么作用。看起來(lái)都挺正常,計(jì)算完就不對(duì)了。
這時(shí)候,你很可能想知道(a + b c)這一部分的結(jié)果,別著急,先將表達(dá)式選中,然后將鼠標(biāo)移動(dòng)到選中的區(qū)域上,稍作停留。

Chrome直接告訴你答案了。更有意思的還在后邊。
直接在選中的區(qū)域單擊鼠標(biāo)右鍵,會(huì)彈出一個(gè)菜單,最上邊兩項(xiàng)分別為:[Add to watch]、[Evaluate in console]。具體對(duì)應(yīng)的視圖參考圖片。

所謂watch,可以理解為監(jiān)控,有些表達(dá)式比較重要,可能需要在整個(gè)調(diào)試過程中,實(shí)時(shí)監(jiān)控該表達(dá)式的值,這時(shí)就可以用watch。
舉個(gè)例子,我們把斷點(diǎn)設(shè)置在"b = 9;"這一行,然后添加watch:"a - b",值為1。如圖:

點(diǎn)擊下一步,執(zhí)行"b = 9;",也就是說b的值發(fā)生了變化,此時(shí)再看看watch:"a - b"的值,為-7。

這樣就達(dá)到了實(shí)時(shí)監(jiān)控的效果,調(diào)試起來(lái)更加方便快捷。
接下來(lái)再看看console是怎么回事。
console當(dāng)然就是控制臺(tái)了,表達(dá)式可以直接在控制臺(tái)中求值。
比如想知道(a + b c)的結(jié)果,直接copy到控制臺(tái)上,回車,結(jié)果就出來(lái)了。
等等,好像哪里不對(duì)的樣子,憑什么控制臺(tái)知道a、b、c的值?
在沒有斷點(diǎn)的情況下,在控制臺(tái)中執(zhí)行JavaScript代碼,是面向全局的。也就是說,此時(shí)在控制臺(tái)中定義一個(gè)變量x,這個(gè)x的作用域是全局的。
如果在程序中斷的情況下使用控制臺(tái),那么控制臺(tái)的作用域面向中斷處的作用域。也就是說,在哪里設(shè)置的斷點(diǎn)(或者是代碼執(zhí)行到了哪里),控制臺(tái)的作用域就在哪里。
就本例而言,在全局范圍內(nèi)定義了一個(gè)變量a,值為1;同時(shí)又在function test作用域定義了一個(gè)局部變量a,值為2。在"a = 2;"處下斷點(diǎn),在控制臺(tái)中輸入a,回車,打印出undefined。

因?yàn)榇藭r(shí)程序在function test內(nèi)部中斷,程序執(zhí)行到了function test中,所以控制臺(tái)的作用域也在function test中,因此輸入a訪問的是局部變量a,而此時(shí)局部變量a并未賦值,所以結(jié)果為undefined。
這次就先分享這么多,以后遇到給力的繼續(xù)分享,希望對(duì)讀者有所幫助。
相關(guān)文章
JS數(shù)組轉(zhuǎn)字符串實(shí)現(xiàn)方法解析
這篇文章主要介紹了JS數(shù)組轉(zhuǎn)字符串實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
layer ui插件顯示tips時(shí),修改字體顏色的實(shí)現(xiàn)方法
今天小編就為大家分享一篇layer ui插件顯示tips時(shí),修改字體顏色的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-09-09
js實(shí)現(xiàn)密碼強(qiáng)度檢驗(yàn)
這篇文章主要為大家詳細(xì)介紹了js密碼強(qiáng)度檢驗(yàn)的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
離開當(dāng)前頁(yè)面前使用js判斷條件提示是否要離開頁(yè)面
這篇文章主要介紹了離開當(dāng)前頁(yè)面前如何使用js判斷條件提示是否要離開頁(yè)面,需要的朋友可以參考下2014-05-05
javascript面向?qū)ο蟪绦蛟O(shè)計(jì)(一)
這篇文章主要介紹了javascript面向?qū)ο蟪绦蛟O(shè)計(jì),分享給大家一段代碼,注釋里講解的非常詳細(xì),有助于我們理解面向?qū)ο?,這里推薦給大家。2015-01-01
javascript原生封裝一個(gè)淡入淡出效果的函數(shù)測(cè)試實(shí)例代碼
這篇文章主要介紹了javascript原生封裝一個(gè)淡入淡出效果的函數(shù),主要有FadeIn淡入函數(shù)和FadeOut淡出函數(shù),需要的朋友可以參考下2018-03-03
JavaScript DOM節(jié)點(diǎn)操作方法總結(jié)
下面小編就為大家?guī)?lái)一篇JavaScript DOM節(jié)點(diǎn)操作方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2016-08-08

