【问题标题】:Why /*@ isn't a comment in JavaScript?为什么 /*@ 不是 JavaScript 中的注释?
【发布时间】:2011-08-01 13:16:04
【问题描述】:

这个脚本http://html5shiv.googlecode.com/svn/trunk/html5.js 看起来像一个大注释,但它确实有效。为什么 /*@ 的行为不像评论?

【问题讨论】:

  • 更多关于 SO 相关的here

标签: javascript comments


【解决方案1】:

这里还有一些infosource

这是一个注释 - 多行注释。所有浏览器都支持 JavaScript 中的 cmets( // 或 /* ... */ )。但只有 IE 会检查注释中的 @ 并识别脚本的一部分以进行条件编译。这是为了使用非标准的 Microsoft 功能。

HTML中还有条件cmetsMSDN,在IE10中会去掉。

【讨论】:

    【解决方案2】:

    这是使用 IE 不考虑 /*@ 评论的奇怪方式的 hack。

    【讨论】:

      【解决方案3】:

      这使用了一个名为 conditional compilation 的专有 Microsoft 功能。就非 Microsoft 浏览器而言,它是一个注释(但它们不需要 shiv)。

      【讨论】:

      • 但是如果这个/*@只适用于IE,为什么这个脚本包含在html中还有另一个条件:<!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]-->。需要这种仔细检查的目的是什么?
      • 我只能猜测作者的动机,但条件 cmets 会阻止其他浏览器尝试下载它,而条件编译会阻止它执行,如果您将其汇总到标准的单个缩小 JS 包中。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多