2009年10月27日星期二

JScript 条件编译变量

JScript 可以使用以下语句根据条件编译变量的值控制脚本的编译.既可以使用 JScript 提供的变量, 也可以使用 @set 指令或 /define 命令行选项定义自己的变量.


  • @cc_on 激活条件编译支持.

  • @if 根据表达式的值, 有条件地执行一组语句.

  • @set 创建使用条件编译语句的变量.

  • @cc_on, @if@set 语句激活条件编译.条件编译的一些典型用途包括在 JScript 中使用新功能、将调试支持嵌入到一个脚本中以及跟踪代码执行.



当编写由 Web 浏览器运行的脚本时, 总是将条件编译代码放在注释中.因此, 不支持条件编译的宿主可以忽略该代码.这是一个示例:
[js]
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
document.write("JScript Version 5.0 or better.<BR>");
@else @*/
document.write("You need a more recent script engine.<BR>");
/*@end @*/
[/js]
此示例使用特殊的注释分隔符, 仅当 @cc_on 语句激活条件编译之后才使用这些分隔符.不支持条件编译的脚本引擎显示一则消息, 建议需要使用新的脚本引擎, 而不会产生错误.支持条件编译的引擎根据引擎的版本编译第一个或第二个 document.write.请注意, 7.x 版表示 JScript .NET.有关更多信息, 请参见检测浏览器功能.

条件编译对于服务器端脚本和命令行程序也很有用.在这些应用程序中, 可使用条件编译将其他函数编译到一个程序中, 便于在调试模式下进行分析.
以下预定义变量可用于条件编译.

  • @_win32 如果在 Win32 系统上运行, 并且没有指定 /platform 选项或指定了 /platform:anycpu 选项, 则为 true; 否则为 NaN.

  • @_win16 如果在 Win16 系统上运行, 则为 true; 否则为 NaN.
  • @_mac 如果在 Apple Macintosh 系统上运行, 则为 true; 否则为 NaN.
  • @_alpha 如果在 DEC Alpha 处理器上运行, 则为 true; 否则为 NaN.

  • @_x86 如果在 Intel 处理器上运行, 并且没有指定 /platform 选项或指定了 /platform:anycpu 选项, 则为 true; 否则为 NaN.

  • @_mc680x0 如果在 Motorola 680x0 处理器上运行, 则为 true; 否则为 NaN.

  • @_PowerPC 如果在 Motorola PowerPC 处理器上运行, 则为 true; 否则为 NaN.

  • @_jscript 始终为 true.

  • @_jscript_build JScript 脚本引擎的内部版本号.

  • @_jscript_version 以 major.minor 格式表示 JScript 版本号的数字.

  • @_debug 如果在调试模式下编译则为 true; 否则为 false.

  • @_fast 如果在快速模式下编译则为 true; 否则为 false.



注意, JScript .NET 报告的版本号为 7.x.JScript 8.0 报告的版本号为 8.x.

在使用条件编译变量之前, 必须先打开条件编译.@cc_on 语句可打开条件编译.条件编译变量通常用于针对 Web 浏览器编写的脚本中.在为 ASP 或 ASP.NET 页或命令行程序编写的脚本中很少使用条件编译变量, 这是因为可以使用其他方法确定编译器的兼容性.

当编写用于网页的脚本时, 始终将条件编译代码放在注释中.这样, 不支持条件编译的宿主就可以忽略该代码.这是一个示例.
[js]
/*@cc_on
document.write("JScript version: " + @_jscript_version + ".<BR>");
@if (@_win32)
document.write("Running on 32-bit Windows.<BR>");
@elif (@_win16) document.write("Running on 16-bit Windows.<BR>");
@else document.write("Running on a different platform.<BR>");
@end @*/
[/js]

没有评论:

发表评论