且看一段代码:
1 |
//@cc_on alert("this is IE"); |
在IE中执行,会alert(“this is IE”), 在其他浏览器中则不会; 因为: “//@cc_on” 是IE的条件编译的语法,或许你没有这么用过,或许你也不打算用IE的这个特性,这都没关系,问题是如果你因为这个导致bug就显得有些冤了,看如下代码:
1 2 3 4 5 |
/*@cc_on@*/ //@param name string function hello(name) { alert(name); } |
就这段代码,其他浏览器都好使,在IE下就出错,而且报错信息会让人费解:
这是因为使用 /*@cc_on@*/ 在IE中就开启了条件编译,下面的 //@ 就被识别为条件编译指令,于是就出错了。
使用IE的开发者调试工具时还要注意一个问题,只要执行了 /*@cc_on@*/ ,后面即使把他删掉,也还是开启了条件编译 了,因为多次执行是在同一个进程内的。
该问题可能出现的情况为: 加入你在开发一个js的某某sdk,可能会因为注释的问题在有些地方工作正常,在有些地方就工作异常,那将是多么郁闷的事情啊。
参考资料: http://baike.baidu.com/view/1097041.htm