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