【分享】Firefox中神奇的JS引擎逻辑判断代码优化
Firefox 结束了IE长期的垄断地位,抱着地球的火狐狸,给了我们很多惊喜。Firefox3.6的JS引擎TraceMonkey是从Firefox原来的 JavaScript引擎SpiderMonkey进化而来,由于采用了一种新的实时编译器技术,可以将JavaScript的性能提升很多。而且 TraceMonkey也不知不觉的对你的代码进行了一些优化。这些优化,理论上讲可以是代码的执行提速,但,也可能会引起兼容性的问题。比如,今天要给大家分享的这个问题就是这样一个,,奇怪的问题。
先看一段代码:
function testFN(){ if ( true ) { function A(){alert('A')} }else{ function A(){alert('B')} } A();}function testFN(){ function A(){alert('A')} A();}function testFN(){ var bl = true; function A(){alert('A')} function A(){alert('B')} if ( bl) { }else{ } A();}function testFN(){ if ( true ) { function A(){alert('A')} }else{ function A(){alert('B')} } A();}document.write(testFN);function testFN(){ if ( 1===1) { function A(){alert('A')} }else{ function A(){alert('B')} } A();}document.write(testFN);function testFN(){ var A; if ( 1===1) { A=function(){alert('A')} }else{ A=function(){alert('B')} } A();}function aa(){return 2+4}alert(aa)
[解决办法]