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 相关文章推荐
js使浏览器窗口最大化实现代码(适用于IE)
Aug 07 Javascript
用console.table()调试javascript
Sep 04 Javascript
js文字横向滚动特效
Nov 11 Javascript
JavaScript中的this引用(推荐)
Aug 05 Javascript
微信小程序 火车票查询实例讲解
Oct 17 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
15个非常实用的JavaScript代码片段
Dec 18 Javascript
vue2.0父子组件间通信的实现方法
Apr 19 Javascript
使用SVG基本操作API的实例讲解
Sep 14 Javascript
vue弹窗消息组件的使用方法
Sep 24 Javascript
vue简单练习 桌面时钟的实现代码实例
Sep 19 Javascript
Vue中使用JsonView来展示Json树的实例代码
Nov 16 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
composer.lock文件的作用
2016/02/03 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
javascript实现日历效果
2019/06/17 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
Django REST framework内置路由用法
2019/07/26 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
python使用Geany编辑器配置方法
2020/02/21 Python
python 实现多维数组(array)排序
2020/02/28 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
函授大专自我鉴定
2013/11/01 职场文书
校园文化标语
2014/06/18 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
python实现黄金分割法的示例代码
2021/04/28 Python
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js