共用方式為


指令碼疑難排解

無論是程式設計新手還是老手,每一種程式設計語言都隱藏著他們意想不到的困難和意外。 這裡列出您在撰寫 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 程式碼