如果不夠細致,任何編程語言都有一些可能發(fā)生錯誤的地方,而且每種語言都有其特殊之處。例如,對于 null 值: JScript 中這個值與 C 或 C++ 語言中的 Null 值所起的作用是不一樣的。
下面提供了一些在編寫 JScript 腳本時可能遇到的問題。
語法錯誤
由于編程語言中的語法比自然語言的語法要嚴(yán)格得多,因此在編寫腳本時對細節(jié)應(yīng)倍加關(guān)注。例如,如果您本意是將字符串作為某個參數(shù),但是在鍵入時忘了使用引號引起來,就會產(chǎn)生問題。
腳本解釋順序
對 JScript 的解釋是 Web 瀏覽器的 HTML 語法分析處理的一部分。因此,如果在文檔的 <HEAD> 標(biāo)識中放置了一個腳本,則將在檢查所有的 <BODY> 標(biāo)識之前加以解釋。如果在 <BODY> 標(biāo)識中將創(chuàng)建對象,但由于在分析處理 <HEAD> 標(biāo)識時這些對象尚不存在,因而不能被腳本操作。
注意 本情況特定于 IE。ASP 和 WSH 具有不同的運行模式(其他宿主亦是)。
自動類型強制
JScript 是一種具有自動強制的自由類型語言。因此,盡管實際上不同類型的值是不相等的,但對下述示例中的表達式求值都將得到 true。
"100" == 100;
false == 0;
要核對類型與值都一致,用“嚴(yán)格相等”運算符(===)。下面兩個表達式的值為 false:
"100" === 100;
false === 0;
運算符優(yōu)先級
在對表達式求值時某個特定運算符的執(zhí)行主要是根據(jù) 運算符優(yōu)先級 ,而不是表達式的位置。因此,在下面的示例中,乘法將先于減法執(zhí)行,盡管在該表達式中第一個出現(xiàn)的運算符是減法。
theRadius = aPerimeterPoint - theCenterpoint * theCorrectionFactor;
對對象使用 for...in 循環(huán)
當(dāng)使用 for...in 循環(huán)對某個對象的屬性進行遍歷時,不必預(yù)先確定或管理將要指定給該循環(huán)計數(shù)器變量的對象字段的順序。此外,在該語言的不同實現(xiàn)方案中該順序可能會不一樣。
with 關(guān)鍵字
with 語句可以方便地用來引用某個特定對象中已有的屬性,但是不能用來給對象添加屬性。要給對象創(chuàng)建新的屬性,必須明確地引用該對象。
this 關(guān)鍵字
盡管可以在對象的定義范圍內(nèi)使用 this 關(guān)鍵字來引用該對象本身,但是當(dāng)函數(shù)不是該對象的定義時,就不能象普通情況那樣使用 this 或類似的關(guān)鍵字來引用當(dāng)前的執(zhí)行函數(shù)。如果該函數(shù)被指定為某個對象的方法,則可以在該函數(shù)內(nèi)使用 this 關(guān)鍵字來引用該對象。
編寫一個腳本,該腳本在 IE 中寫腳本
當(dāng)解釋程序遇到</SCRIPT>標(biāo)記時會終止當(dāng)前腳本。要顯示"</SCRIPT>" 本身,請將其改寫為至少兩個字符串,例如 "</SCR" 和 "IPT>",這樣就可以在輸出語句中將其連接在一起。
IE 中的隱式窗口引用
由于同時可以打開多個窗口,任何隱式的窗口引用都被指向當(dāng)前窗口。對于其他窗口必須使用顯式引用。
更多信息請查看IT技術(shù)專欄