JScript 可以使用以下語句根據條件編譯變數的值來控制腳本的編譯。既可以使用 JScript 提供的變量,也可以使用 @set 指令或 /define 命令列選項定義自己的變數。
@cc_on
啟動條件編譯支援。
@if
根據表達式的值,有條件地執行一組語句。
@set
建立使用條件編譯語句的變數。
@cc_on、@if 或 @set 語句啟動條件編譯。條件編譯的一些典型用途包括在 JScript 中使用新功能、將偵錯支援嵌入到一個腳本中以及追蹤程式碼執行。
當編寫由 Web 瀏覽器執行的腳本時,總是將條件編譯程式碼放在註解中。因此,不支援條件編譯的宿主可以忽略該程式碼。這是一個範例。
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
document.write("JScript Version 5.0 或 better.
");
@else @*/
document.write("You need a more recent script engine.
");
/*@end @*/
此範例使用特殊的註解分隔符,僅當 @cc_on 語句啟動條件編譯之後才使用這些分隔符。不支援條件編譯的腳本引擎顯示一則訊息,建議需要使用新的腳本引擎,而不會產生錯誤。支援條件編譯的引擎根據引擎的版本編譯第一個或第二個 document.write。請注意,7.x 版表示 JScript .NET。有關更多信息,請參見檢測瀏覽器功能。
條件編譯對於伺服器端腳本和命令列程式也很有用。在這些應用程式中,可使用條件編譯將其他函數編譯到一個程式中,以便在偵錯模式下進行分析。
以下預定義變數可用於條件編譯。
@_win32
如果在 Win32 系統上執行,且沒有指定 /platform 選項或指定了 /platform:anycpu 選項,則為 true;否則為 NaN。
@_win16
如果在 Win16 系統上執行,則為 true;否則為 NaN。
@_mac
如果在 Apple Macintosh 系統上執行,則為 true;否則為 NaN。
@_alpha
如果在 DEC Alpha 處理器上執行,則為 true;否則為 NaN。
@_x86
如果在 Intel 處理器上執行,且沒有指定 /platform 選項或指定了 /platform:anycpu 選項,則為 true;否則為 NaN。
@_mc680x0
如果在 Motorola 680x0 處理器上運行,則為 true;否則為 NaN。
@_PowerPC
如果在 Motorola PowerPC 處理器上執行,則為 true;否則為 NaN。
@_jscript
始終為 true。
@_jscript_build
JScript 腳本引擎的內部版本號。
@_jscript_version
以 major.minor 格式表示 JScript 版本號的數字。
@_debug
若在偵錯模式下編譯則為 true;否則為 false。
@_fast
若在快速模式下編譯則為 true;否則為 false。
注意
JScript .NET 報告的版本號碼為 7.x。 JScript 8.0 報告的版本號碼為 8.x。
在使用條件編譯變數之前,必須先開啟條件編譯。 @cc_on 語句可開啟條件編譯。條件編譯變數通常用於針對 Web 瀏覽器編寫的腳本。在為 ASP 或 ASP.NET 頁或命令列程式編寫的腳本中很少使用條件編譯變量,這是因為可以使用其他方法來確定編譯器的相容性。
當編寫用於網頁的腳本時,請務必將條件編譯程式碼放在註解中。這樣,不支援條件編譯的宿主就可以忽略該程式碼。這是一個範例。
/*@cc_on
document.write("JScript version: " @_jscript_version ".
");
@if (@_win32)
document.write("Running on 32-bit Windows.
");
@elif (@_win16)
document.write("Running on 16-bit Windows.
");
@else
document.write("Running on a different platform.
");
@end
@*/