JavaScript:/* @ @ */的含义是什么?

10

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

这个脚本以/*@开头,以@*/结尾,就像这样:

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

/*@ @*/是什么作用?

我本来期望/* */序列会将它们之间的所有行都注释掉,但由于脚本是被执行的,所以在这里这不可能是情况。 我感到困惑。

源自:

  

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

2个回答

14

IE的JScript支持“条件编译”技巧,即在注释中隐藏特定于浏览器的信息。 思想是/*@...@*/这样的字符序列非常不寻常,因此重新用它来引入这种新的语法级别特性是安全的。

html5shiv使用它创建了一段代码,在大多数浏览器上甚至都不会尝试运行(像您一样,将整个内容解释为注释),但对IE具有特殊含义。

MS文档在这里。没有其他JS引擎支持此功能。通常,您可能更喜欢更明确的行为探测代码,但如果您真的需要检测一个不暴露给嗅探的IE功能,这可能很方便。


1
没有其他JS引擎支持这个...这不就是重点吗? ;) - Artfunkel
1
@Artfunkel:其他浏览器已经引入了其他浏览器扩展程序,因此其他人可能实现CC的某些功能并不是不可能的。不过,现在每个人都将它独占地用于检测IE,这可能不是一个好主意。 - bobince

7

但他的示例在这个脚本中并没有使用任何元条件语句,那么为什么要在这里使用呢? - Alex Wayne
1
因为使用 @cc 可以保证它只在 IE 上执行。 - Marc B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接