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 相关文章推荐
JQuery切换显示的效果实例代码
Feb 27 Javascript
判断一个对象是否为jquery对象的方法
Mar 12 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
JavaScript的设计模式经典之代理模式
Feb 24 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 Javascript
Vue.js 插件开发详解
Mar 29 Javascript
jquery dataTable 获取某行数据
May 05 jQuery
微信小程序实现评论功能
Nov 28 Javascript
jquery获取img的src值实例介绍
Jan 16 jQuery
koa router 多文件引入的方法示例
May 22 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
Mar 09 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
Sep 04 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
繁体中文转换为简体中文的PHP函数
2006/10/09 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
jQuery获取URL请求参数的方法
2015/07/18 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
JS回调函数深入理解
2019/10/16 Javascript
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
运动会表扬稿范文
2015/05/05 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android