?? day5_3.html
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312-80">
<style type="text/css">
<!--
a:link { color: blue; text-decoration: none}
a:visited { color: purple; text-decoration: none}
a:hover { color: #CC0033; text-decoration: underline}
-->
</style>
<title>JavaScript高級教程</title>
</head>
<body topmargin="1" leftmargin="2">
<table border="0" width="591" cellspacing="0">
<tr>
<td bgcolor="#ffff99" width="451">JavaScript高級教程 - 第五課</td>
</tr>
<tr>
<td bgcolor="#FF6600" width="451"><a href="mailto:thau@wired.com">Thau</a></td>
</tr>
</table>
<div align="left">
<table border="0" width="630" cellspacing="0">
<tr>
<td width="458" valign="top" align="left" rowspan="2"><small><small><br>
</small></small><strong>第三頁:<font size="3">一般性程序錯誤</font></strong>
<p>多數(shù)錯誤只是無聊的語法錯誤。記住關(guān)閉那些引號,大括號和<br>
小括號會花費很長時間,不過幸運的是JavaScript自動錯誤檢<br>
測器能捕獲大部分此類錯誤。雖然JavaScript錯誤檢測器隨著<br>
日漸復(fù)雜的流覽器而不斷完善,但是一些錯誤仍會溜走。下面<br>
是一些需要留意的常見錯誤:</p>
<p><strong>混淆變量名或函數(shù)名</strong></p>
<blockquote>
<p>大寫和復(fù)數(shù)變量和函數(shù)名產(chǎn)生的錯誤令人煩惱地經(jīng)<br>
常出現(xiàn),有時JavaScript錯誤檢測器不能捕獲它們。<br>
通過建立和堅持使用一種對變量和函數(shù)的命名協(xié)定,<br>
會大大減少這些麻煩的數(shù)量。例如,我全部用小寫<br>
字母定義變量,并用下劃線代替空格 (my_variable,<br>
the_data, an_example_variable),用內(nèi)置符號表<br>
示函數(shù) (addThreeNumbers(), writeError()等)。<br>
我避免使用任何復(fù)數(shù),因為我總是忘記那些變量是<br>
不是復(fù)數(shù)。</p>
</blockquote>
<p><strong>偶然地使用了保留字</strong></p>
<blockquote>
<p>一些字不能作為變量名,因為它們已經(jīng)被JavaScript<br>
使用。例如,不能定義一個叫“if”的變量,因為<br>
它實際上是JavaScript的一部分 - 如果使用“if”,<br>
你會遇到各種麻煩。當(dāng)你因為使用命名為“if”的<br>
變量而變得瘋狂時,一個叫做“document”的變量<br>
是很誘人的。不幸的是,“document”是一個<br>
JavaScript對象。另一個經(jīng)常遇到的問題是把變量<br>
命名為“name”(窗體元素有“names”屬性)。把<br>
變量命名為“name”不會總出問題,只是有時 - <br>
這會更使人迷惑 - 這就是避免使用“name”變量的<br>
原因。</p>
<p>不幸的是,不同的流覽器有不同的保留字,所以沒<br>
有辦法知道該回避哪些字。最安全的辦法是避免使<br>
用已經(jīng)成為JavaScript一部分的字和HTML使用的字。<br>
如果你因為變量遇到問題,并且不能發(fā)現(xiàn)哪兒錯了,<br>
試著把變量改個名字。如果成功了,你或許就避開<br>
了保留字。</p>
</blockquote>
<p><strong>記住在邏輯判斷時應(yīng)該用兩個等號</strong></p>
<blockquote>
<p>一些流覽器能捕獲這種錯誤,有些卻不能。這是一<br>
種非常常見的錯誤,但是如果流覽器不能替你指<br>
出來,你就很難發(fā)現(xiàn)。下面是一個這種錯誤的例子:</p>
<blockquote>
<pre>var the_name = prompt("what's your name?", "");
if (the_name = "the monkey")
{
alert("hello monkey!");
} else {
alert("hello stranger.");
}</pre>
</blockquote>
<p>這段代碼將產(chǎn)生“hello monkey!”警告對話框 - <br>
不管你在提示里敲的是什么 - 這不是我們希望的。<br>
原因是在if-then語句中只有一個等號,這句話告<br>
訴JavaScript你想讓一件事等于另一件。假設(shè)你在<br>
提示中敲的是“robbie the robot”。最開始,變<br>
量the_name的值是“robbie the robot”,但是隨<br>
后if語句告訴JavaScript你想把the_name設(shè)為<br>
“the monkey.”。于是JavaScript很高興地執(zhí)行你<br>
的命令,送一個“true”消息給if-then語句,結(jié)果<br>
警告對話框每次都出現(xiàn)“hello monkey!”。</p>
<p>這種陰險的錯誤會使你發(fā)瘋,所以注意使用兩個<br>
等號。</p>
</blockquote>
<p><strong>偶然給變量加上了引號,或忘了給字符串加引號</strong></p>
<blockquote>
<p>我不時遇到這個問題。JavaScript區(qū)分變量和字符<br>
串的唯一方法是:字符串有引號,變量沒有。下面<br>
有一個明顯的錯誤:</p>
<blockquote>
<pre>var the_name = 'koko the gorilla';
alert("the_name is very happy");</pre>
</blockquote>
<p>雖然the_name是一個變量,但是程序還會產(chǎn)生一個<br>
提示“the_name is very happy,”的警告對話框。<br>
這是因為一旦JavaScript看見引號包圍著某些東西<br>
就不再考慮它,所以當(dāng)你把the_name放在引號里,<br>
你就阻止了JavaScript從內(nèi)存中查找它。</p>
<p>下面是一個不太明顯的此類錯誤的擴(kuò)展(我們已經(jīng)<br>
在第三天的課程里見過):</p>
<pre>function wakeMeIn3()
{
var the_message = "Wake up! Hey! Hey! WAKE UP!!!!";
setTimeout("alert(the_message);", 3000);
}</pre>
<p>這里的問題是你告訴JavaScript三秒后執(zhí)行alert<br>
(the_message)。但是,三秒后the_message將不再<br>
存在,因為你已經(jīng)退出了函數(shù)。這個問題可以這樣<br>
解決:</p>
<pre>function wakeMeIn3()
{
var the_message = "Wake up!";
setTimeout("alert('" + the_message+ "');", 3000);
}</pre>
<p>把the_message放在引號外面,命令“alert('Wake<br>
up!');”由setTimeout預(yù)定好,就可以得到你想<br>
要的。</p>
<p>這只是一些可能在你的代碼中作祟的很難調(diào)試的<br>
錯誤。一旦發(fā)現(xiàn)了它們,就有不同的或好或差的方<br>
法來改正錯誤。你很幸運,因為你能從我的經(jīng)驗和<br>
錯誤中獲益。<a href="day5_4.html">>></a></p>
</blockquote>
<p align="left"><font face="宋體" size="3" color="#000000"><strong>JavaScript高級教程</strong></font><font color="#FF0000" face="宋體" size="3"><br>
</font><font color="#FF3300" size="3">第一頁</font><font size="3"> </font><a href="day5_1.html"><font size="3" face="verdana, arial, geneva, sans-serif">JavaScript</font><font size="3">高級教程</font><font size="3" face="verdana, arial, geneva, sans-serif">-
</font><font size="3">第</font><font size="3" face="verdana, arial, geneva, sans-serif">5</font><font size="3">天</font></a><font size="3">
<br>
</font><font color="#FF3300" size="3">第二頁 </font><font size="3"><a href="day5_2.html">打印變量</a><br>
</font><font color="#FF3300" size="3">第三頁 </font><font size="3">一般性程序錯誤<br>
</font><font color="#FF3300" size="3">第四頁 </font><font size="3"><a href="day5_4.html">修正錯誤</a><br>
</font><font color="#FF3300" size="3">第五頁 </font><font size="3"><a href="day5_5.html">好的編程實踐</a><br>
</font><font color="#FF3300" size="3">第六頁 </font><font size="3"><a href="day5_6.html">按速度優(yōu)化JavaScript代碼</a><br>
</font><font color="#FF3300" size="3">第七頁 </font><a href="day5_7.html"><font size="3">下面講什么?</font></a></p>
<p align="left">[<a href="day1_1.html">第1課</a>][<a href="day2_1.html">第2課</a>][<a href="day3_1.html">第3課</a>][<a href="day4_1.html">第4課</a>][第5課]</p>
<hr align="left">
<!--webbot bot="Include" U-Include="../../copyright.html" TAG="BODY" startspan -->
<p><font face="verdana, arial, geneva, sans-serif" size="2"><a href="http://phtshop.yeah.net" target="_top">本文根據(jù)
網(wǎng)猴 相關(guān)文章改編,版權(quán)歸原作者所有。</a> </font></p>
<!--webbot bot="Include" endspan i-checksum="63119" --> </td>
</tr>
<tr> </tr>
</table>
</div>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -