【发布时间】:2014-02-10 02:43:09
【问题描述】:
我最近不得不修复一个有时在 Internet Explorer 中出现的错误。错误在于,有时,解析器会卡在类似
之类的代码上<script type="text/javascript">
<!-- // comments -->
/*...*/
</script>
我们通过更正评论来解决这个问题。
我的问题是:“<!--”是有效的javascript代码吗?我尝试用萤火虫测试它,它只说“未定义”。 JSFiddle 没有烦恼。 IE 有时只是卡住它(重新加载有问题的页面会显示所涉及脚本的结果)。
虽然知道,由于历史原因,js 中的 HTML 注释可能是有效的,具体取决于它的确切位置和月相确实有用,但我对“var <!-- foo 是有效的 js”之类的答案更感兴趣代码,但 <!-- 本身不是。原因如下:..."
我在firebug中做了一些分析:
var x = 2;
var y = 3;
var z = 0;
console.log(x);
console.log(y);
y<!--x;
console.log(x);
console.log(y);
z = y<! --x;
console.log(x);
console.log(y);
console.log(z);
结果如下:
2
3
2
3
1
3
false
第一次和第二次尝试的区别很有趣。
然后我尝试了
z = (y <!--x);
console.log(z);
失败了
SyntaxError: missing ) in parenthetical
【问题讨论】:
-
foo <!--bar有效。 :D -
如果不是拼写错误,可能是因为 HTML 注释前有多余的空格。一些 Javascript 解析器可能只在脚本的开头忽略 HTML cmets。
-
@cookiemonster
ReferenceError: foo is not defined -
当然。这并不意味着它不是有效的 JavaScript。这只是意味着你没有定义
foo,也可能没有定义bar。 -
@MackieeE,如前所述,我期待着将
标签: javascript