JScript中的条件注释详解


Posted in Javascript onApril 24, 2015

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

@cc_on 
 激活条件编译支持。
 
@if 
 根据表达式的值,有条件地执行一组语句。
 
@set 
 创建使用条件编译语句的变量。
 
@cc_on、@if 或 @set 语句激活条件编译。条件编译的一些典型用途包括在 JScript 中使用新功能、将调试支持嵌入到一个脚本中以及跟踪代码执行。

当编写由 Web 浏览器运行的脚本时,总是将条件编译代码放在注释中。因此,不支持条件编译的宿主可以忽略该代码。这是一个示例。

/*@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 @*/

此示例使用特殊的注释分隔符,仅当 @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 页或命令行程序编写的脚本中很少使用条件编译变量,这是因为可以使用其他方法确定编译器的兼容性。

当编写用于网页的脚本时,始终将条件编译代码放在注释中。这样,不支持条件编译的宿主就可以忽略该代码。这是一个示例。

/*@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

@*/
Javascript 相关文章推荐
JavaScript 通过模式匹配实现重载
Aug 12 Javascript
关于firefox的ElementTraversal 接口 使用说明
Nov 11 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
Aug 21 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
Jan 31 Javascript
iframe如何动态创建及释放其所占内存
Sep 03 Javascript
javascript实现的猜数小游戏完整实例代码
May 10 Javascript
简单实现JavaScript弹幕效果
Aug 27 Javascript
angularjs实现过滤并替换关键字小功能
Sep 19 Javascript
javascript+html5+css3自定义弹出窗口效果
Oct 26 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
Oct 24 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
Apr 22 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 #Javascript
js闭包实现按秒计数
Apr 23 #Javascript
jQuery中使用each处理json数据
Apr 23 #Javascript
javascript数组去重方法汇总
Apr 23 #Javascript
javascript实现英文首字母大写
Apr 23 #Javascript
原生js和jquery实现图片轮播淡入淡出效果
Apr 23 #Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 #Javascript
You might like
初品cakephp 入门基础
2012/02/16 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
python使用循环实现批量创建文件夹示例
2014/03/25 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
python FTP编程基础入门
2021/02/27 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
师德模范事迹材料
2014/06/03 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
商超业务员岗位职责
2015/02/13 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
学校安全管理制度
2015/08/06 职场文书
《去年的树》教学反思
2016/02/18 职场文书
java设计模式--建造者模式详解
2021/07/21 Java/Android
python中的getter与setter你了解吗
2022/03/24 Python