Javascript / Jquery注释导致IE中的错误

时间:2011-07-08 23:04:40

标签: javascript jquery internet-explorer commenting

所以这篇文章并不是一个“请帮助我修复它”的帖子,而是“为什么会改变它使它工作?”。所以我写了一些在firefox和chrome中运行的javascript / jquery,但IE引发了错误。

即使有来自stackoverflow的用户的有用帖子,我也无法理解。我最终偶然发现了答案(因为我似乎发现自己在编码方面做了很多工作)。

我正在做一种严谨的评论风格,我的一位计算机科学教授告诉我,其中一个函数可以评论如下:

//@ describe function
//@ params: param1 - function, param2 - function
//@ etc....

所以我愚蠢地把它扔进我的javascript只是为了发现IE真的根本不关心这个。当我删除@符号时,代码完美无缺。

所以我的问题是为什么这会导致IE出错?不应该跟随'//'评论无关紧要吗?

2 个答案:

答案 0 :(得分:8)

它确实看起来像一些怪异的IE条件评论支持。看来如果@是注释的第一个字符(无论是以// @还是/ * @开头,那么IE会在@符号后面查找条件注释指令。有关示例,请参阅http://msdn.microsoft.com/en-us/library/8ka90k2e(v=vs.94).aspx

AlienWebguy的建议应该有效,因为评论的第一个字符是*。你可能也可以在@符号之前放一个空格:

// @ describe function
// @ params: param1 - function, param2 - function
// @ etc....

答案 1 :(得分:6)

你可能会想到docblock注释,你想要用块注释语法包装它:

/**
 * Function does this
 * @param <string> $str The string
 * @param <array> $arr The array
 * @return <bool> true if string is in array, false if not
*/

我可以看到IE只是愚蠢。即使有一个解释为什么你的//@不起作用,它可能是一个非常愚蠢的,并且很可能只有一小部分我们甚至能够在我们的IE的版本。

IE是我所知的唯一一个查看条件注释的浏览器,因此我可以看到它们的注释解析器与所有其他浏览器不同,这些浏览器会与其他正确的代码冲突。