Javascript調(diào)試腳本的經(jīng)驗(yàn)之談第1/2頁
更新時(shí)間:2008年10月13日 18:31:46 作者:
隨著用JavaScript編程的深入,你會(huì)開始理解那些JavaScript給出的不透明錯(cuò)誤信息。一旦你理解了你常犯的一般性錯(cuò)誤,你就會(huì)很快知道怎樣避免它們,這樣你寫的代碼中的錯(cuò)誤將越來越少。
編程實(shí)際上是一種能隨著時(shí)間不斷飛快進(jìn)步的技術(shù)。但是不管變得多么熟練,你仍然要花一些時(shí)間調(diào)試你的代碼。如果你做過家庭作業(yè),或有過JacaScript編程經(jīng)驗(yàn),你會(huì)知道相當(dāng)多的時(shí)間是花在調(diào)試上。這很正常 - 這只是編程者必須做的事之一。實(shí)際上,按照大量的研究,程序員平均百分之五十的時(shí)間花在解決代碼中的錯(cuò)誤。
關(guān)鍵是學(xué)會(huì)怎樣有效地調(diào)試你的程序。我有一些技巧可以幫助你解決程序?yàn)槭裁礇]有象應(yīng)該的那樣運(yùn)行,或者幫你首先避免寫有很多錯(cuò)誤的代碼:
1.用不同方式打印出變量
2.注意一般性錯(cuò)誤
3.編碼之前先想好
--------------------------------------------------------------------------------
如果JavaScript沒能捕獲你的錯(cuò)誤,你也沒有通過查看代碼發(fā)現(xiàn)錯(cuò)誤,有時(shí)打印出變量會(huì)對你有所幫助。最簡單的方法是象下面這樣使用一個(gè)alert():
// theGreeting gets a name using getName, then presents
// one or two alert boxes depending on what the name is
//function getName()
{
var first_name = prompt("what's your first name?","");
var last_name = prompt("what's your last name?","");
var the_name = first_name + " " + last_name;
alert("in getName, the_name is: " + the_name);
}
-----------------------------找到錯(cuò)誤--------------------------------------------------
1.一般性程序錯(cuò)誤
多數(shù)錯(cuò)誤只是無聊的語法錯(cuò)誤。記住關(guān)閉那些引號(hào),大括號(hào)和小括號(hào)會(huì)花費(fèi)很長時(shí)間,不過幸運(yùn)的是 JavaScript自動(dòng)錯(cuò)誤檢測器能捕獲大部分此類錯(cuò)誤。雖然JavaScript錯(cuò)誤檢測器隨著日漸復(fù)雜的流覽器而不斷完善,但是一些錯(cuò)誤仍會(huì)溜走。下面是一些需要留意的常見錯(cuò)誤:
2.混淆變量名或函數(shù)名
大寫和復(fù)數(shù)變量和函數(shù)名產(chǎn)生的錯(cuò)誤令人煩惱地經(jīng)常出現(xiàn),有時(shí)JavaScript錯(cuò)誤檢測器不能捕獲它們。通過建立和堅(jiān)持使用一種對變量和函數(shù)的命名協(xié)定,會(huì)大大減少這些麻煩的數(shù)量。例如,我全部用小寫字母定義變量,并用下劃線代替空格(my_variable,the_data, an_example_variable),用內(nèi)置符號(hào)表示函數(shù) (addThreeNumbers(), writeError()等)。我避免使用任何復(fù)數(shù),因?yàn)槲铱偸峭浤切┳兞渴遣皇菑?fù)數(shù)。
3.偶然地使用了保留字
一些字不能作為變量名,因?yàn)樗鼈円呀?jīng)被JavaScript使用。例如,不能定義一個(gè)叫 “if”的變量,因?yàn)樗鼘?shí)際上是JavaScript的一部分 - 如果使用“if”,你會(huì)遇到各種麻煩。當(dāng)你因?yàn)槭褂妹麨椤癷f”的變量而變得瘋狂時(shí),一個(gè)叫做“document”的變量是很誘人的。不幸的是,“document”是一個(gè)JavaScript對象。另一個(gè)經(jīng)常遇到的問題是把變量命名為“name”(窗體元素有“names”屬性)。把變量命名為“name”不會(huì)總出問題,只是有時(shí) - 這會(huì)更使人迷惑 - 這就是避免使用“name”變量的原因。
不幸的是,不同的流覽器有不同的保留字,所以沒有辦法知道該回避哪些字。最安全的辦法是避免使用已經(jīng)成為JavaScript一部分的字和HTML使用的字。如果你因?yàn)樽兞坑龅絾栴},并且不能發(fā)現(xiàn)哪兒錯(cuò)了,試著把變量改個(gè)名字。如果成功了,你或許就避開了保留字。
4.記住在邏輯判斷時(shí)應(yīng)該用兩個(gè)等號(hào)
一些流覽器能捕獲這種錯(cuò)誤,有些卻不能。這是一種非常常見的錯(cuò)誤,但是如果流覽器不能替你指出來,你就很難發(fā)現(xiàn)。下面是一個(gè)這種錯(cuò)誤的例子:
var the_name = prompt("what's your name?", "");
if (the_name = "the monkey")
{
alert("hello monkey!");
} else {
alert("hello stranger.");
}
這段代碼將產(chǎn)生“hello monkey!”警告對話框 - 不管你在提示里敲的是什么 - 這不是我們希望的。原因是在if-then語句中只有一個(gè)等號(hào),這句話告訴JavaScript你想讓一件事等于另一件。假設(shè)你在提示中敲的是 “robbie the robot”。最開始,變量the_name的值是“robbie the robot”,但是隨后if語句告訴JavaScript你想把the_name設(shè)為“the monkey.”。于是JavaScript很高興地執(zhí)行你的命令,送一個(gè)“true”消息給if-then語句,結(jié)果警告對話框每次都出現(xiàn)“hello monkey!”。這種陰險(xiǎn)的錯(cuò)誤會(huì)使你發(fā)瘋,所以注意使用兩個(gè)等號(hào)。
5.偶然給變量加上了引號(hào),或忘了給字符串加引號(hào)
我不時(shí)遇到這個(gè)問題。JavaScript區(qū)分變量和字符串的唯一方法是:字符串有引號(hào),變量沒有。下面有一個(gè)明顯的錯(cuò)誤:
var the_name = 'koko the gorilla';
alert("the_name is very happy");
關(guān)鍵是學(xué)會(huì)怎樣有效地調(diào)試你的程序。我有一些技巧可以幫助你解決程序?yàn)槭裁礇]有象應(yīng)該的那樣運(yùn)行,或者幫你首先避免寫有很多錯(cuò)誤的代碼:
1.用不同方式打印出變量
2.注意一般性錯(cuò)誤
3.編碼之前先想好
--------------------------------------------------------------------------------
如果JavaScript沒能捕獲你的錯(cuò)誤,你也沒有通過查看代碼發(fā)現(xiàn)錯(cuò)誤,有時(shí)打印出變量會(huì)對你有所幫助。最簡單的方法是象下面這樣使用一個(gè)alert():
// theGreeting gets a name using getName, then presents
// one or two alert boxes depending on what the name is
//function getName()
{
var first_name = prompt("what's your first name?","");
var last_name = prompt("what's your last name?","");
var the_name = first_name + " " + last_name;
alert("in getName, the_name is: " + the_name);
}
-----------------------------找到錯(cuò)誤--------------------------------------------------
1.一般性程序錯(cuò)誤
多數(shù)錯(cuò)誤只是無聊的語法錯(cuò)誤。記住關(guān)閉那些引號(hào),大括號(hào)和小括號(hào)會(huì)花費(fèi)很長時(shí)間,不過幸運(yùn)的是 JavaScript自動(dòng)錯(cuò)誤檢測器能捕獲大部分此類錯(cuò)誤。雖然JavaScript錯(cuò)誤檢測器隨著日漸復(fù)雜的流覽器而不斷完善,但是一些錯(cuò)誤仍會(huì)溜走。下面是一些需要留意的常見錯(cuò)誤:
2.混淆變量名或函數(shù)名
大寫和復(fù)數(shù)變量和函數(shù)名產(chǎn)生的錯(cuò)誤令人煩惱地經(jīng)常出現(xiàn),有時(shí)JavaScript錯(cuò)誤檢測器不能捕獲它們。通過建立和堅(jiān)持使用一種對變量和函數(shù)的命名協(xié)定,會(huì)大大減少這些麻煩的數(shù)量。例如,我全部用小寫字母定義變量,并用下劃線代替空格(my_variable,the_data, an_example_variable),用內(nèi)置符號(hào)表示函數(shù) (addThreeNumbers(), writeError()等)。我避免使用任何復(fù)數(shù),因?yàn)槲铱偸峭浤切┳兞渴遣皇菑?fù)數(shù)。
3.偶然地使用了保留字
一些字不能作為變量名,因?yàn)樗鼈円呀?jīng)被JavaScript使用。例如,不能定義一個(gè)叫 “if”的變量,因?yàn)樗鼘?shí)際上是JavaScript的一部分 - 如果使用“if”,你會(huì)遇到各種麻煩。當(dāng)你因?yàn)槭褂妹麨椤癷f”的變量而變得瘋狂時(shí),一個(gè)叫做“document”的變量是很誘人的。不幸的是,“document”是一個(gè)JavaScript對象。另一個(gè)經(jīng)常遇到的問題是把變量命名為“name”(窗體元素有“names”屬性)。把變量命名為“name”不會(huì)總出問題,只是有時(shí) - 這會(huì)更使人迷惑 - 這就是避免使用“name”變量的原因。
不幸的是,不同的流覽器有不同的保留字,所以沒有辦法知道該回避哪些字。最安全的辦法是避免使用已經(jīng)成為JavaScript一部分的字和HTML使用的字。如果你因?yàn)樽兞坑龅絾栴},并且不能發(fā)現(xiàn)哪兒錯(cuò)了,試著把變量改個(gè)名字。如果成功了,你或許就避開了保留字。
4.記住在邏輯判斷時(shí)應(yīng)該用兩個(gè)等號(hào)
一些流覽器能捕獲這種錯(cuò)誤,有些卻不能。這是一種非常常見的錯(cuò)誤,但是如果流覽器不能替你指出來,你就很難發(fā)現(xiàn)。下面是一個(gè)這種錯(cuò)誤的例子:
var the_name = prompt("what's your name?", "");
if (the_name = "the monkey")
{
alert("hello monkey!");
} else {
alert("hello stranger.");
}
這段代碼將產(chǎn)生“hello monkey!”警告對話框 - 不管你在提示里敲的是什么 - 這不是我們希望的。原因是在if-then語句中只有一個(gè)等號(hào),這句話告訴JavaScript你想讓一件事等于另一件。假設(shè)你在提示中敲的是 “robbie the robot”。最開始,變量the_name的值是“robbie the robot”,但是隨后if語句告訴JavaScript你想把the_name設(shè)為“the monkey.”。于是JavaScript很高興地執(zhí)行你的命令,送一個(gè)“true”消息給if-then語句,結(jié)果警告對話框每次都出現(xiàn)“hello monkey!”。這種陰險(xiǎn)的錯(cuò)誤會(huì)使你發(fā)瘋,所以注意使用兩個(gè)等號(hào)。
5.偶然給變量加上了引號(hào),或忘了給字符串加引號(hào)
我不時(shí)遇到這個(gè)問題。JavaScript區(qū)分變量和字符串的唯一方法是:字符串有引號(hào),變量沒有。下面有一個(gè)明顯的錯(cuò)誤:
var the_name = 'koko the gorilla';
alert("the_name is very happy");
您可能感興趣的文章:
- Javascript調(diào)試工具(下載)
- javascript腳本調(diào)試方法小結(jié)
- 在IE,Firefox,Safari,Chrome,Opera瀏覽器上調(diào)試javascript
- js調(diào)試工具 Javascript Debug Toolkit 2.0.0版本發(fā)布
- ie 調(diào)試javascript的工具
- Javascript 調(diào)試?yán)?Firebug使用詳解六
- 調(diào)試JavaScript/VBScript腳本程序(IE篇)
- Aptana調(diào)試javascript圖解教程
- 兩個(gè)JavaScript jsFiddle JSBin在線調(diào)試器
- JavaScript 錯(cuò)誤處理與調(diào)試經(jīng)驗(yàn)總結(jié)
- javascript 在firebug調(diào)試時(shí)用console.log的方法
- 調(diào)試Javascript代碼(瀏覽器F12及VS中debugger關(guān)鍵字)
- 10個(gè)基于瀏覽器的JavaScript調(diào)試工具分享
- 利用瀏覽器的Javascript控制臺(tái)調(diào)試PHP程序
- 禁用JavaScript控制臺(tái)調(diào)試的方法
- JS高級調(diào)試技巧:捕獲和分析 JavaScript Error詳解
- JavaScript調(diào)試技巧之console.log()詳解
- javascript調(diào)試之DOM斷點(diǎn)調(diào)試法使用技巧分享
- 使用Chrome調(diào)試JavaScript的斷點(diǎn)設(shè)置和調(diào)試技巧
- 谷歌瀏覽器調(diào)試JavaScript小技巧
- JavaScript如何調(diào)試有哪些建議和技巧附五款有用的調(diào)試工具
相關(guān)文章
bootstrap 設(shè)置checkbox部分選中效果
本篇文章主要介紹了bootstrap 設(shè)置checkbox部分選中效果,主要涉及到j(luò)s各個(gè)方面的內(nèi)容,對于bootstrap設(shè)置checkbox選中效果感興趣的朋友可以參考一下吧2017-04-04JS實(shí)現(xiàn)數(shù)組去重復(fù)值的方法示例
這篇文章主要介紹了JS實(shí)現(xiàn)數(shù)組去重復(fù)值的方法,結(jié)合實(shí)例形式分析了JS通過數(shù)組遍歷、運(yùn)算等方法實(shí)現(xiàn)去重復(fù)值的操作技巧,需要的朋友可以參考下2017-02-02Bootstrap實(shí)現(xiàn)下拉菜單多級聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了Bootstrap實(shí)現(xiàn)下拉菜單多級聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11