共用方式為


指令碼疑難排解

更新:2007 年 11 月

無論是程式設計新手還是老手,每一種程式設計語言都隱藏著他們意想不到的困難和意外。這裡列出您在撰寫 JScript 指令碼時可能遇到的一些疑難問題。

語法錯誤

因為程式設計語言的語法比自然語言的語法還要嚴謹得多,所以在撰寫指令碼時,對小細節多加注意是十分重要的。例如,您想要讓某個特定參數成為一個字串,卻忘記以引號括住那個參數,則可能遭遇錯誤。

指令碼解譯的順序

在 Web 網頁中,JScript 的解譯方法是根據每個瀏覽器的 HTML 剖析程序而定。<HEAD> 標記內的指令碼之解譯會早於 <BODY> 標記中的文字。因此,當瀏覽器剖析 <HEAD> 項目時,<BODY> 標記中所要建立的物件是不存在的,所以無法由指令碼操作。

注意事項:

這種情形只會發生在 Internet Explorer 中。ASP 和 WSH 有不同的執行模型 (如同其他的主應用程式)。

強制型轉

JScript 是不嚴格規定型別且會自動強制型轉 (Coercion) 的語言。因此,雖然不同型別的值事實上並不相等,但下列範例中的運算式還是會被評估為 true。

"100" == 100;
false == 0;

如果要檢查型別和值是否相同,請使用絕對等號比較運算子 (===)。以下兩種評估都為 false:

"100" === 100;
false === 0;

運算子優先順序

在評估運算式時的操作執行順序時,主要決定於運算子優先順序,而不是運算子在運算式的順序。因此在以下範例中,即使運算式中的減法運算子位於乘法運算子之前,乘法的執行還是先於減法。

theRadius = aPerimeterPoint - theCenterpoint * theCorrectionFactor;

如需詳細資訊,請參閱運算子優先順序

將 for...in 迴圈與物件搭配使用

當指令碼使用 for...in 迴圈逐步處理物件屬性時,不一定能夠預測或控制將物件欄位指派給迴圈計數器變數的順序。再者,不同的語言實作也可能會有不同的順序。如需詳細資訊,請參閱 for...in 陳述式

with 關鍵字

with 關鍵字十分便於用來定址已存在於所指定之物件中的屬性,但是它無法用來將屬性加入物件中。若要在物件中建立新屬性,您必須特別指向物件。如需詳細資訊,請參閱 with 陳述式

this 關鍵字

雖然 this 關鍵字存在於物件的定義之內,但如果目前執行中的函式不是物件定義,您不能經常使用 this 或類似的關鍵字來參考該函式。如果將函式當做設定到物件的方法,指令碼在函式中可使用 this 關鍵字,以便參考物件。如需詳細資訊,請參閱 this 陳述式

撰寫會在 Internet Explorer 或 ASP.NET 中寫入指令碼的指令碼

如果解譯器遇到 </SCRIPT> 標記,便會結束目前的指令碼。若要顯示 "</SCRIPT>" 本身,必須至少將它重寫為兩個以上的字串,例如 "</SCR" 和 "IPT>",這樣就可以在寫出這兩個字串的陳述式中將它們串連在一起。

Internet Explorer 中的隱含視窗參考

因為可以同時開啟一個以上的視窗,對任何視窗而言都隱含參考至現有視窗。至於其他視窗,則必須使用明確的參考。

請參閱

工作

以 Visual Studio 撰寫 JScript 程式碼

概念

以 Visual Studio 進行 JScript 的偵錯

其他資源

撰寫、編譯和偵錯 JScript 程式碼