Выражения, приведенные в данной статье будут работать только на движке JScript, но иногда бывают полезны.
JScript (читай Internet Explorer) поддерживает условную компиляцию. Не "ах" какая фича, но для разбора чужого кода и для общего развития знать полезно. Чтобы не было конфликта с другимим браузерами код условной компиляции заключают в контейнер многострочного комментария. Включается она директивой @cc_on:
Для работы с условными конструкциями используется комплект деректив @if, @elif, @else, @end. Для чего они нужны, думаю, понятно из имен.
/*@if (@_win32)
alert("Вы в IE под win32");
@elif (@_win16)
alert("Вы под win16 O_o");
@else
alert("Где же вы прячетесь?");
@end @*/
Как можно заметить из предыдущего примера, существует "встроенные" переменные условной компиляции:
- @_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.
Если вы используете переменную формата @name, которая не существует, то она вернет NaN.
Также переменные можно создавать с помощью директивы @set.
/*@if (@_jscript)
@set @var1 = 3;
alert(@var1); // Вернет 3
@end @*/
Также об условной компиляции и её директивах можно прочитать в MSDN.

