百度空间 | 百度首页 
 
查看文章
 
一个JSA压缩的一个bug 或者说JScript解释器的bug
2008-04-10 20:57
之所以说或者,是说,严格按照ECMA262,JSA没错,错的是JScript没有完全遵守ECMA262。

不多废话,先亮出问题。
原始代码:
var i=0;
if(i){
if(i){
    do {
      i++;
    }while(i!=10);
}else {
    i--;
}
}

压缩结果:
var i=0;if(i)if(i)do i++;while(i!=10);else i--

这个结果,其实也算正确,但是无法通过IE的验证。

可能的原因:

IE 把 do <exp >while(<flag>) 直接看作一个完整的语句(省略了大括弧的do while 块),而紧随其后的分号被当作下一个句子。导致后面的else 悬空。








顺便申明一个问题,XHR可以通过localhost 本机机器名 或ip测试跨域。
开始也这么想当然,偶然听到同事肯定的质疑,自己测试了一下,还是证实了自己相当能的结论。

类别:J S I | 添加到搜藏 | 浏览() | 评论 (2)
最近读者:
 
网友评论:
1
2008-04-12 00:45 | 回复
呵呵~~~
 
2
2008-05-07 21:04 | 回复
今天发现,这个地雷又被大名鼎鼎的 Prototype踩到了! if (!nextAncestor) { do { ancestor = ancestor.parentNode; } while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode); }
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     
 
精彩相册
   
     

©2009 Baidu