Javascript IE10抛出SCRIPT1002:条件内部的语法错误 ;(函数(根,工厂){ if(typeof define=='function'&&define.amd){ 定义([],工厂); }else if(导出的类型==='object'){ module.exports=工厂(); }否则{ root.MyClass=factory(); } }(这个,函数(){ "严格使用",; if(/*@cc_on!@*/false&&document.documentMode==10)返回; 类MyClass{ // ... } }));

Javascript IE10抛出SCRIPT1002:条件内部的语法错误 ;(函数(根,工厂){ if(typeof define=='function'&&define.amd){ 定义([],工厂); }else if(导出的类型==='object'){ module.exports=工厂(); }否则{ root.MyClass=factory(); } }(这个,函数(){ "严格使用",; if(/*@cc_on!@*/false&&document.documentMode==10)返回; 类MyClass{ // ... } }));,javascript,internet-explorer-10,Javascript,Internet Explorer 10,在IE10中,类显然不起作用。但是,我使用的条件-(/*@cc\u on!@*/false&&document.documentMode==10)-是为了在IE10中禁用它(它在站点上每隔一种情况下都有效)。我尝试将条件移动到其他地方,用这个条件包装整个文件,等等,但结果相同 为什么它仍然抛出这个错误?我怎样才能避开它,这样整个事情就被IE10忽略了呢?从你发布的内容来看还不清楚,但你必须考虑如果/*@cc\u打开,代码会是什么样子@*/测试成功;换句话说,这个声明在IE10看来是什么样的。你把

在IE10中,类显然不起作用。但是,我使用的条件-
(/*@cc\u on!@*/false&&document.documentMode==10)
-是为了在IE10中禁用它(它在站点上每隔一种情况下都有效)。我尝试将条件移动到其他地方,用这个条件包装整个文件,等等,但结果相同


为什么它仍然抛出这个错误?我怎样才能避开它,这样整个事情就被IE10忽略了呢?

从你发布的内容来看还不清楚,但你必须考虑如果
/*@cc\u打开,代码会是什么样子@*/测试成功;换句话说,这个声明在IE10看来是什么样的。你把它放在
if
测试中,所以这似乎是可疑的。而且,解析器必须能够理解代码块的完整语法,无论它是否执行过。没错,即使IE10从未真正进入
if
块,它仍然需要能够解析它<代码>如果(false){/*必须解析这个*/}
将失败,如果注释被替换为语法无效的垃圾代码。啊,是的,这当然是有道理的。我一直认为解析器只会运行块,直到它们满足应该退出的条件。你对如何绕过这个问题有什么建议吗?在正常情况下,我会说把IE10无法理解的代码放在它自己的文件中,并且只有当你不在IE10中时才包括该文件。但这是在某种模块内,我不知道如何使这种想法适应这种情况。