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