Понятие условной компиляции

Начиная с Internet Explorer 4.0, язык JScript поддерживает условную компиляцию сценариев. Она была введена в JScript для того, чтобы одновременно обеспечить и использование новых возможностей языка, и совместимость со старыми версиями обозревателей. Типичными примерами использования условной компиляции являются добавление в сценарий отладочного кода и трассировка исполнения сценария. Условная компиляция включается директивой @cc_on или директивами @if или @set. Директивы условной компиляции всегда следует помещать внутрь комментариев с тем, чтобы обозреватели, которые не поддерживают условную компиляцию (например, Netscape Navigator), их игнорировали. Приведем пример:
/*@cc_on @*/
/*@if (@_jscript_version >= 4)
   alert("JScript версии 4 или выше");
   @else @*/
   alert("Ваш JScript устарел.");
/*@end @*/
В этом примере использованы комментарии специального вида, которые используются только после директивы @cc_on. Обозреватели, которые не поддерживают условную компиляцию, увидят здесь только строку alert("Ваш JScript устарел.") и исполнят ее.  

Переменные условной компиляции

В директивах условной компиляции могут использоваться предопределенные переменные, перечисленные в приведенной ниже таблице. Если значение переменной отлично от true, то она не определена и ведет себя как NaN.
Переменные условной компиляции
Переменная Описание
@_win32 true при выполнении в системе Win32.
@_win16 true при выполнении в системе Win16.
@_mac true при выполнении в системе Apple Macintosh.
@_alpha true при выполнении на процессоре DEC Alpha.
@_x86 true при выполнении на процессоре Intel.
@_mc680x0 true при выполнении на процессоре Motorola 680x0.
@_PowerPC true при выполнении на процессоре Motorola PowerPC.
@_jscript Всегда true.
@_jscript_build Номер сборки JScript.
@_jscript_version Номер версии JScript в формате m.n.

Директива @cc_on

Синтаксис: @cc_on
Директива @cc_on включает условную компиляцию. Пример ее использования приведен выше. Альтернативный способом включения условной компиляции является использование директив @if или @set, не заключенных в комментарий.

Директива @if

Синтаксис:
@if (условие1)
  текст1
@elif (условие2)
  текст2
@else
  текст3
@end
Аргументы: условие1, условие2 — логические выражения

текст1, текст2, текст3 — любой текст JScript
Директива @if выполняет заданный фрагмент кода в зависимости от значения выражения. Если условие1 истинно, то выполняется текст1. Если условие1 ложно, присутствует необязательная директива @elif и условие2 истинно, то выполняется текст2. В противном случае, если присутствует необязательная директива @else, то выполняется текст3; если ее нет, то управление передается следующему оператору. Данная директива может содержать несколько ветвей @elif, но все они должны предшествовать ветви@else. Пример ее использования:
@if (@_win32)
  alert("Работаем в Windows NT/95/98")
@else
  alert("Неизвестная операционная система!");