Условная компиляция в javascript
Условная компиляция |
||||||||||||||||||||||||
Начиная с Internet Explorer 4.0, язык JScript поддерживает условную компиляцию сценариев. Она была введена в JScript для того, чтобы одновременно обеспечить и использование новых возможностей языка, и совместимость со старыми версиями обозревателей. Типичными примерами использования условной компиляции являются добавление в сценарий отладочного кода и трассировка исполнения сценария. Условная компиляция включается директивой @cc_on или директивами @if или @set. Директивы условной компиляции всегда следует помещать внутрь комментариев с тем, чтобы обозреватели, которые не поддерживают условную компиляцию (например, Netscape Navigator), их игнорировали. Пример:
/*@cc_on @*/ В этом примере использованы комментарии специального вида, которые используются только после директивы @cc_on. Обозреватели, которые не поддерживают условную компиляцию, увидят здесь только строку alert(«Ваш JScript устарел.») и исполнят ее. |
||||||||||||||||||||||||
В директивах условной компиляции могут использоваться предопределенные переменные, перечисленные в приведенной ниже таблице. Если значение переменной отлично от true, то она не определена и ведет себя как NaN.
|
Директивы условной компилляции:
NN n/a IE 4.0 ECMA n/a |
|
Директива @cc_on включает условную компиляцию. Альтернативный способом включения условной компиляции является использование директив @if или @set, не заключенных в комментарий. | |
Синтаксис: |
|
NN n/a IE 4.0 ECMA n/a |
|
Директива @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(«Неизвестная операционная система!»); |
NN n/a IE 4.0 ECMA n/a |
|
Директива @set создает переменные условной компиляции. Имена таких переменных имеют синтаксис переменных JavaScript, но должны начинаться с символа «@». Значение, которое присваивается переменной, может быть любым выражением JavaScript (возможно с использованием ранее определенных переменных условной компиляции), которое возвращает числовое или логическое значение. | |
Синтаксис: @set @переменная = значение |
|
Примеры: @set @var1 = 1 @set @var2 = (@var1 + 1) * 10; @set @var3 = @_jscript_version Если переменная используется до ее определения, то она имеет значение NaN. Поскольку это единственное значение, которое не равно самому себе, то проверку определенности значения переменной следует делать так: @if (@myVar != @myVar) …
Источник: yapro.ru |