javascript: /*@ @*/ 是啥意思?

Posted

技术标签:

【中文标题】javascript: /*@ @*/ 是啥意思?【英文标题】:javascript: what does /*@ @*/ mean?javascript: /*@ @*/ 是什么意思? 【发布时间】:2011-11-01 11:55:12 【问题描述】:

谁能解释一下 html5shim 脚本的开头和结尾是如何工作的?

脚本以/*@ 开头,以@*/ 结尾,如下所示:

/*@cc_on(function(a,b)function ........ (this,document);@*/

/*@ @*/ 在做什么?

我希望 /* */ 序列注释掉它们之间的所有行,但是由于脚本执行,这里不能这样吗?我很困惑。

发现于:

http://html5shim.googlecode.com/svn/trunk/html5.js

【问题讨论】:

【参考方案1】:

这是“条件编译”的 IE 主义:http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

【讨论】:

但是他的示例在该脚本中没有使用任何元条件,所以为什么会在这里使用? 因为使用@cc 保证它只会在 IE 上执行。【参考方案2】:

IE 的 JScript 支持“条件编译”,这是一种在 cmets 中隐藏特定于浏览器的特殊信息的技巧。这个想法是 /*@...@*/ 是一个如此不寻常的字符序列,可以安全地重新利用它来引入这个新的语法级功能。

html5shiv 使用它来创建一段代码,它甚至不会尝试在大多数浏览器上运行(就像你所做的那样,它将整个事情解释为一个推荐),但它对 IE 具有特殊意义。

MS doc here。没有其他 JS 引擎支持这一点。通常,您可能更喜欢更明确的行为嗅探代码,但如果您确实需要检测一个不会暴露于嗅探的 IE 功能,它会很方便。

【讨论】:

"没有其他 JS 引擎支持这个"...这不是重点吗? ;) @Artfunkel:好吧,其他浏览器已经采用了其他浏览器扩展,因此其他人可能会实现 CC 的某些功能并不是不可能的。可能不是一个好主意,现在每个人都专门用它来检测 IE,不过......

以上是关于javascript: /*@ @*/ 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript:“!!”是啥意思? [复制]

javascript: /*@ @*/ 是啥意思?

“JavaScript 命名空间”是啥意思? [复制]

Javascript 中的 !function 是啥意思? [复制]

JavaScript 中的“=>”是啥意思? [复制]

Javascript 速记 - '||' 是啥意思运算符在作业中使用时的意思? [复制]