Дополнительные возможности JScript - Программирование от RIN.RU
Дополнительные возможности JScript
Условная компиляция
Понятие условной компиляции
Начиная с 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, не заключенных в комментарий.
условие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("Неизвестная операционная система!");
Директива @set
Синтаксис:
@set @перем = значение
Аргументы:
перем - переменная условной компиляции; значение - числовое или логическое выражение
Директива @set создает переменные условной компиляции. Имена таких переменных имеют синтаксис переменных JavaScript, но должны начинаться с символа "@". Значение, которое присваивается переменной, может быть любым выражением JavaScript (возможно с использованием ранее определенных переменных условной компиляции), которое возвращает числовое или логическое значение.
Если переменная используется до ее определения, то она имеет значение NaN. Поскольку это единственное значение. которое не равно самому себе, то проверку определенности значения переменной следует делать так: