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: /*@ @*/ 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章