Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Условная компиляция в javascript
Начиная с 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 включает условную компиляцию. Альтернативный способом включения условной компиляции является использование директив @if или @set, не заключенных в комментарий.
@if
Директива @if выполняет заданный фрагмент кода в зависимости от значения выражения.
Синтаксис:
@if (условие1) инструкции1 @elif (условие2) инструкции2 @else инструкции3 @end
Если условие1 истинно, то выполняются инструкции1. Если условие1 ложно, присутствует необязательная директива @elif и условие2 истинно, то выполняются инструкции2. В противном случае, если присутствует необязательная директива @else, то выполняются инструкции3; если ее нет, то управление передается следующему оператору. Данная директива может содержать несколько ветвей @elif, но все они должны предшествовать ветви @else.
Пример:
@if (@_win32) alert("Работаем в Windows NT/95/98") @else alert("Неизвестная операционная система!");
@set
Директива @set создает переменные условной компиляции. Имена таких переменных имеют синтаксис переменных JavaScript, но должны начинаться с символа "@". Значение, которое присваивается переменной, может быть любым выражением JavaScript (возможно с использованием ранее определенных переменных условной компиляции), которое возвращает числовое или логическое значение.
Синтаксис:
@set @переменная = значение
Примеры:
@set @var1 = 1 @set @var2 = (@var1 + 1) * 10; @set @var3 = @_jscript_version
Если переменная используется до ее определения, то она имеет значение NaN. Поскольку это единственное значение, которое не равно самому себе, то проверку определенности значения переменной следует делать так:
@if (@myVar != @myVar) …
Читать дальше: Примеры скриптов на JavaScript